16 lines
467 B
Haskell
16 lines
467 B
Haskell
data Tower = First | Middle | Last deriving Show
|
|
|
|
data Instruction = Move Tower Tower deriving Show
|
|
|
|
-- show :: Instruction -> String
|
|
-- show Move from to = "Moving " ++ show from ++ " to " ++ show to
|
|
|
|
solve :: Tower -> Tower -> Tower -> Integer -> [Instruction]
|
|
solve _ _ _ 0 = []
|
|
solve from over to n = solve from to over (n - 1) ++ [Move from to] ++ solve over from to (n - 1)
|
|
|
|
main :: IO ()
|
|
main = let
|
|
solution = solve First Middle Last 4
|
|
in
|
|
print solution
|