Tower of Hanoi
by Ryan Brown
HTML
<form>
<input type = "textbox" id = "tb" value="6" />
<input type = "button" id="tbut" value="enter disc" onclick ="setnum();" />
</form>
<pre id="output"></pre>
JavaScript
var counter = 0,
lists;
var hanoi = function (disc, src, aux, dst) {
if (disc > 10) {
alert('THAT CAN TAKE A WHILE ( AND MAYBE EVEN CRASH YOUR BROWSER )!\nPlease use a lower number of discs...');
return;
}
if (!lists) {
lists = {
src: [],
dst: [],
aux: []
};
for (var i = disc; i > 0; i--) {
lists.src.push(i);
}
console.log('Initially, src, dst and aux: ');
console.log(lists.src)
console.log(lists.dst)
console.log(lists.aux)
}
if (disc > 0) {
hanoi(disc - 1, src, dst, aux);
document.querySelector('#output ').innerHTML = document.querySelector('#output ').innerHTML + ++counter + ". Move disc " + disc + " from " + src + " to " + dst + "\n";
lists[dst].push(lists[src].pop());
console.log('After step ' + counter + ', src, dst and aux: ');
console.log(lists.src)
console.log(lists.dst)
console.log(lists.aux)
hanoi(disc - 1, aux, src, dst);
}
};
var temp = getElementById("tb").value
hanoi("temp", "src", "aux", "dst");