Tower of Hanoi (Simple)
by Hari Menon
HTML
<pre id="output"></pre>
JavaScript
var lists, counter = 0;
var appendToOutput = function (text) {
document.querySelector('#output').innerHTML = document.querySelector('#output').innerHTML + text;
};
var printTheLists = function () {
appendToOutput('\tSRC: ' + lists.src.join(', ') + '\n\tDST: ' + lists.dst.join(', ') + '\n\tAUX: ' + lists.aux.join(', ') + '\n\n');
}
var initialize = function (disc, src, aux, dst) {
lists = {
src: [],
dst: [],
aux: []
};
for (var i = disc; i > 0; i--) {
lists.src.push(i);
}
appendToOutput('Initial State:\n');
printTheLists();
};
var hanoi = function (disc, src, aux, dst) {
if (!lists) {
initialize(disc, src, aux, dst);
}
if (disc > 0) {
hanoi(disc - 1, src, dst, aux);
appendToOutput(++counter + '. Moving disc ' + disc + ' from ' + src + ' to ' + dst + '\n');
lists[dst].push(lists[src].pop());
printTheLists();
hanoi(disc - 1, aux, src, dst);
}
};
hanoi(4, 'src', 'aux', 'dst');