You are here: Home Blog Comments [Groovy]キミならどう書く 2.0 - ROUND 1 -

Personal tools

[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 -