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}}== |