読者です 読者をやめる 読者になる 読者になる

@neiraza

2匹の怪獣が寝た後にプログラマーしてる、最近はサイバーエージェントでゼミ長もしてる僕のネタ帳

GroovyでFizzBuzz

過去記事の続きで、Gradleのドキュメントやらを読みながら、Groovyの勉強を開始。
Gradleをいれてみた

Groovyは以前、Grailsを使用していた時にやっていたんだけど、
途中からほとんどJavaと変わらない感じで書いてた。
この機会にGroovyらしく書けるようになるために、コツコツやっていこうかなと。

というわけで、まずは入門という事でFizzBuzzを書いてみた。
なんつーか、for文が短くなっただけって結果に。

(1..100).each{println(it%3==0?it%5==0?'FizzBuzz':'Fizz':it%5==0?'Buzz':it)} 

とりあえず色んな書き方の前に、一番短そうなやつを見つけた。

100.times{println('Fizz'*(it%3/2)+'Buzz'*(it%5/4)?:++it)}

ポイントは、

  • 文字列を引数文だけ繰り返す「*」
  • 剰余の最大値に着目
  • 0..99なので++

特に「*」を抑えてないと、その先の工夫には辿り着けないってオチ。