aboutsummaryrefslogtreecommitdiff
path: root/challenge-112/stuart-little/haskell/ch-2.hs
blob: ef4416b79dadbc927e5407e3de08cbf4969d788b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env runghc

-- run <script> <number>

import Data.List (intercalate)
import System.Environment (getArgs)

memoSteps :: Int -> [[Int]]
memoSteps = (map memo [0 ..] !!)
   where memo 0 = [[1]]
         memo 1 = [[1,1],[2]]
         memo n = (map (1:) $ memoSteps (n-1)) ++ (map (2:) $ memoSteps (n-2))

main = do
  nr <- getArgs >>= return . (read::String->Int) . head
  let res = memoSteps (nr-1)
  putStrLn $ (show $ length res) ++ "\n" ++ (replicate 12 '-')
  putStrLn $ intercalate "\n" $ map unwords $ (map.map) show res