( ꒪⌓꒪) ゆるよろ日記

( ゚∀゚)o彡°オパーイ!オパーイ! ( ;゚皿゚)ノシΣ フィンギィィーーッ!!!

ScalaでFibBuzz


解いてみた。他の言語と違って、fib(92)以上はLongに収まらないのでBigIntを用いなければならないところがまずツラい。あとprintln長すぎる。


最初はStreamを使ってfibを定義した。

// 163bytes
val x:BigInt=1
val f:Stream[BigInt]=x#::f.scanLeft(x){(a,b)=>a+b}
for(i<-f take 100;j=i-1)println(if(i%3*i%5>0)i else"Fizz"*(j%3/2).toInt+"Buzz"*(j%5/4).toInt)


別にStreamである必然性もないのでscanLeftして152byte。

//152bytes
val x:BigInt=1
for((i,_)<-(0 to 98).scanLeft((x,x)){case((b,c),a)=>(c,b+c)};j=i-1)println(if(i%3*i%5>0)i else"Fizz"*(j%3/2).toInt+"Buzz"*(j%5/4).toInt)


あとは、誰か、頼む


参考にした記事
FizzBuzz CodeGolf in Scala extends noire722 - 鴨川アンダーザブリッジ