Towers of Hanoi: Difference between revisions

Content added Content deleted
(Added Ela)
Line 1,079: Line 1,079:
end
end
end</lang>
end</lang>

=={{header|Ela}}==
{{trans|Haskell}}
<lang ela>open monad io
:::IO

//Functional approach
hanoi 0 _ _ _ = []
hanoi n a b c = hanoi (n - 1) a c b ++ [(a,b)] ++ hanoi (n - 1) c b a

hanoiIO n = mapM_ f $ hanoi n 1 2 3 where
f (x,y) = putStrLn $ "Move " ++ show x ++ " to " ++ show y

//Imperative approach using IO monad
hanoiM n = hanoiM' n 1 2 3 where
hanoiM' 0 _ _ _ = return ()
hanoiM' n a b c = do
hanoiM' (n - 1) a c b
putStrLn $ "Move " ++ show a ++ " to " ++ show b
hanoiM' (n - 1) c b a</lang>


=={{header|Elixir}}==
=={{header|Elixir}}==