Towers of Hanoi: Difference between revisions
→{{header|JavaScript}}: added ES6 version
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}}==
|