Problem 230
コンテンツ
230 Fibonacci Words
規則性を見いだせ,ということなんでしょう.
再帰的な構造なので,それを利用.現在どこのブロックにいて(m),何番目(n)が欲しいのかで再帰.
import Data.List (findIndex) fib :: [Integer] fib = 100: 100: zipWith (+) fib (tail fib) index :: Integer -> Int index n = let Just m = findIndex (n <=) fib in fromInteger $ ipart n m ipart :: Integer -> Int -> Integer ipart n = n ipart n 1 = n + 100 ipart n m | n <= p = ipart n $ m - 2 | otherwise = ipart (n - p) $ m - 1 where p = fib !! (m - 2) a, b :: [Char] a = "1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679" b = "8214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196" main :: IO () main = print [ (a ++ b) !! ( index $ (127 + 19 * n)*7^n - 1) | n <- [17,16..] ]
作成者 Toru Mano
最終更新時刻 2023-01-01 (c70d5a1)