2009/11/16 20:20:15
リスト内包表記で素数チェック
プログラミングHaskell読みはじめた。この本はHaskellプログラミングの入門書というよりは、Haskellプログラミングとはどういう考え方で書いていくかの入門書的な感じがする。いきなりこれ読んでもhaskellでコード書けないんじゃないだろうか。
4章のリスト内包表記の章で、ある数の因数を求める関数を定義して、それを用いて素数判定をしていたのでpythonでもやってみた。
def factors(n):
return [x for x in range(1,n+1) if n % x == 0]
def is_prime(n):
return True if len(factors(n)) == 2 else False
あとHaskellだと
[x|x <- xs | xs <- a]
でconcatenateできて便利なんでこれもpythonで、とか思ったんだけど
リストの要素が常にひとつのときのみ
a = [[1], [2], [3]]
[x for [x] in a] # [1, 2, 3]
ってやればできるんだけど、二つ以上の要素になった場合が分からんかった。
この本ほとんど疑似コード(?)なので考えるにはよいですな。お薦め。
プログラミングHaskell