Project Euler Problem64でとうとうカンニング
Posted 7月 27th, 2010 by hippos
in
Project Euler再開してしばらくたちますがすでに壁にブチ当たってます。64問目にして、とうとうカンニングしちゃいました。だいたい、連分数って何よ!?っていう人間には難しすぎる。
というわけで、カツ丼食べながらHaskellで書いたのがこれ。
cfrac n =
let
o = sqrt n
a = truncate o
p = n - (fromIntegral a)^2
in (a,truncate p)
cfracs n (l,p) =
let
a = truncate (fromIntegral p /((sqrt n)- fromIntegral l))
p' = (n - ((fromIntegral l)^2)) / fromIntegral p
l' = (fromIntegral a * p') - (fromIntegral l)
f' = (truncate l',truncate p')
in
if (cfrac n) == f' then a:[] else a : cfracs n f'
desc_cfrac n = (fst (cfrac n),a xss)
where
xss = cfracs n (cfrac n)
a xss' = tail xss' ++ [head xss']これで、√23の場合、
*Main> desc_cfrac 23
(4,[1,3,1,8])みたいになります。
もうね、Problem 64 - もうカツ丼でいいよなって言われりゃ、ハイ、結構ですとしか言いようがないです。Haskellにカタカタ型型言われながらも、メゲずに続けていきますとも。
| 添付 | サイズ |
|---|---|
| p64.hs | 796 bytes |
この記事のトラックバックURL:
http://hippos-lab.com/blog/trackback/374






Comments