Revision: 48644
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at July 7, 2011 01:05 by rtperson
Initial Code
--Haskell Towers of Hanoi
-- ... because you know you want to...
import System.Environment
-- you are moving from a to b using c as an intermediate
hanoi :: Integer -> a -> a -> a -> [(a,a)]
hanoi 0 _ _ _ = []
hanoi n a b c = hanoi (n - 1) a c b ++ [(a,b)] ++ hanoi (n - 1) c b a
hanoiIO :: Integer -> IO ()
hanoiIO n = mapM_ f $ hanoi n "one" "two" "three" where
f (x,y) = putStrLn $ "Move " ++ show x ++ " to " ++ show y
-- for some reason this doesn't work in GHCi. Use main' in GHCi
main :: IO ()
main = do
args <- getArgs
hanoiIO $ read (args !! 0)
main' = hanoiIO 3
Initial URL
Initial Description
Initial Title
Towers of Hanoi in Haskell
Initial Tags
Initial Language
Haskell