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 - 鴨川アンダーザブリッジ