wvogel日記

自分用の技術備忘録が多めです.

Python Learning

フィボナッチ数列

def fibo(x):
 if(x <= 1):
   return [1]
 list = [1,1]
 while(len(list) < x):
   list.append( list[len(list)-2] + list[len(list)-1] )
 return list


完全数

def perf_n(x):
 sum = 0
 for i in xrange(1,x,1):
   if(x%i==0):
     sum += i
 return (sum == x)

Haskellはリスト処理が強力だけど、
Pythonはどうなんだろう
なかなかリスト処理の関数が見つからない。
フィボナッチは

fibo = 1:1:zipWith (+) fibo (tail fibo)

だし、
完全数

perf_n x = (x==).sum $ filter ((==0).mod x) [1..x-1]

まあ、もし関数が用意されていないなら作ってもいいんだけど。
でもやっぱり、Haskellは綺麗