yojikのlog

yojikのブログです

素数を数えて落ち着くんだ(Pnuts編)

キミならどう書く 2.0

Pnutsでできる限り簡潔、効率無視で書いてみた。(少し修正)

function isPrim(p){
  return (list(range(2,p)[function(d) p%d == 0]).size()==1)
}
function isPrim(p) !range(2,p)[function(d) p%d == 0][1];
for(i: range(2, 100)[isPrim]) print(i,",")
[実行結果]:
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,null

Pnutsでは、配列やジェネレータの添え字に関数を指定できる。すると関数の条件を満たす要素で構成されたジェネレータが返って来る。これは結構便利な記法。
filterとか使って、もっと関数型っぽくやりたい人は、functionalモジュールをuseするといいと思う。(あまりくわしくないです。。)
Javaで書いたバージョンもあるけど、あまり特徴が出せなかったので省略。