おそ

Project Eulerの問題をできるだけHaskellで解こうとしてるけど、Haskellで速いプログラムを書けません。ヘタレ。21とか

pdivs n = [x | x <- [1 .. n `div` 2], n `mod` x == 0]
amicable a = sum (pdivs a') == a && a' /= a
             where
               a' = sum (pdivs a)

> sum [x | x <- [1 .. 10000], amicable x]

はい直感的過ぎてすみませんね(^o^) とか言ってる間にぐぐったら
http://haskell.g.hatena.ne.jp/nobsun/20080314/p1
というのを発見。簡単な工夫で速くなる良い例だと思いました。反省。もう少し考えて組め俺。でもナイーブな実装だと簡単に書けちゃうのはHaskellの良いところですよねーごめんうそそんなわけARIKA。

あとメモ探(memoizationのこt)したいんだけどHaskellでメモ探する方法が良くわからんので勉強しないとダメですね。春休み中にHaskellの機能に一通り触れておきたい。