-- a209234.hs import Data.List (sort, genericLength, group, transpose) import Text.Printf (printf) twoDigitLookAndSay :: Integer -> Integer twoDigitLookAndSay n = read $ concat $ concat $ transpose [map (show . genericLength) ls, map (printf "%02d" . head) ls] where ls :: [[Integer]] ls = group $ sort $ tail $ reverse $ d2 n d2 :: Integer -> [Integer] d2 x = if x == 0 then [] else (x `mod` 100) : d2 (x `div` 10) -- . -- A209234 a209234 n = a209234_list !! n a209234_list = iterate twoDigitLookAndSay 10 -- A209233 a209233 n = a209233_list !! n a209233_list = iterate twoDigitLookAndSay 11 -- A221368 a221368 n = a221368_list !! n a221368_list = iterate twoDigitLookAndSay 12 -- A221369 a221369 n = a221369_list !! n a221369_list = iterate twoDigitLookAndSay 13 -- A221372 a221372 n = a221372_list !! n a221372_list = iterate twoDigitLookAndSay 19 -- A221373 a221373 n = a221373_list !! n a221373_list = iterate twoDigitLookAndSay 99