Scala: エラトステネスのふるい
Stream の使いどころが少しずつ分かってきた。
エラトステネスのふるいがこんな簡潔に書けるのは衝撃的。
- コード
1 2 3 4 | def from(n : Int) : Stream[Int] = n #:: from(n + 1 ) // 整数の Stream を作る def sieve(s : Stream[Int]) : Stream[Int] = s.head #:: sieve(s.tail.filter( _ % s.head ! = 0 )) sieve(from( 2 )).take( 20 ).print |
- 出力
1 | 2 , 3 , 5 , 7 , 11 , 13 , 17 , 19 , 23 , 29 , 31 , 37 , 41 , 43 , 47 , 53 , 59 , 61 , 67 , 71 , empty |
0 件のコメント:
コメントを投稿