昨日の続き。
jmuk さんや id:KimuraShinichi さんの助言を受けて改良した。faray 列版。昨日のよりも長くなっているような気もするが、そういうこともある:
import System import Numeric faray m a b = f a b where f a@(an,ad) b@(bn,bd) | d < m = f a c ++ f c b | True = [a] where c = ( an + bn, d ) d = ad + bd irr m = faray m (0,1) (1,1) ++ [(1,1)] main = test $ irr . (+1) . head where test f = getArgs >>= putStr . show . f . argToNum argToNum = map $ fst . head . readDec
出題が、分母が N 以下 となっていたので、題意にあうように +1 した。
見た感じはだいぶ Haskell っぽくなったような気もするが、アルゴリズムという点からは、ちっともそれらしくない。
次は何しようかな。