[Groovy]キミならどう書く 2.0 - ROUND 1 -
Posted by
Onion開発日記
at
2006-06-18 18:40
Groovyで書いてみた。まずはこんな感じのコード。
println ((2..100).findAll{x->(2..x/2).every{x%it!=0}})
しかし、実行してみると、何故か2が含まれない。
[3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79
, 83, 89, 97]
たぶん、範囲式の使い方が原因だろうということで、ちょっと調べてみる。
(2..1).each{println it}
=>
2
1
どうやら、(x .. y)で、x>yの場合は、空の範囲を生成するのではなく、x,
x-1,x-2,...,yの範囲を生成するようだ。しかも、Groovyの公式ページのドキュメントを見ても、この仕様に関するきちんとした記述が見当たらないorz
仕方無いので、内側のループは2..x/2ではなく、2...xにすることにした。
println ((2..100).findAll{x->(2...x).every{x%it!=0}})
今度は、ちゃんと2も出力されるようになった。
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73,
79, 83, 89, 97]
Parent entry
キミならどう書く 2.0 - ROUND 1 -