RosettaCodeData/Task/Hofstadter-Q-sequence/Haskell/hofstadter-q-sequence-2.hs
2025-02-27 18:35:13 -05:00

13 lines
463 B
Haskell

douglasHofstadter :: Int -> [Int]
douglasHofstadter m = reverse (dSeqEffect [1,1] 2 m)
where
dSeqEffect xs n m | n > m = xs
| otherwise = dSeqEffect (((xs !! (xs !! (n - 1))) + (xs !! (n - (xs !! (n - 1)))) ) : xs) (n + 1) m
-- main
getIntArg :: IO Int
getIntArg = fmap (read . head) getArgs
main = do
args <- getIntArg
print (douglasHofstadter args)