Towers of Hanoi: Difference between revisions

Content added Content deleted
m (→‎{{header|JavaScript}}: Layout, type-signature comment)
(→‎{{header|JavaScript}}: added ES6 version)
Line 1,812:
 
=={{header|JavaScript}}==
===ES5===
 
<lang javascript>function move(n, a, b, c) {
if (n > 0) {
Line 1,845:
 
{{Out}}
 
<lang JavaScript>["left -> right", "left -> mid",
"right -> mid", "left -> right",
"mid -> left", "mid -> right",
"left -> right"]</lang>
 
===ES6===
 
<lang JavaScript>(() => {
'use strict';
 
// hanoi :: Int -> String -> String -> String -> [[String, String]]
const hanoi = (n, a, b, c) =>
n ? hanoi(n - 1, a, c, b)
.concat([
[a, b]
])
.concat(hanoi(n - 1, c, b, a)) : [];
 
// show :: a -> String
const show = x => JSON.stringify(x, null, 2);
 
return show(
hanoi(3, 'left', 'right', 'mid')
.map(d => d[0] + ' -> ' + d[1])
);
})();</lang>
 
{{Out}}
<pre>[
"left -> right",
"left -> mid",
"right -> mid",
"left -> right",
"mid -> left",
"mid -> right",
"left -> right"
]</pre>
 
=={{header|Joy}}==