»
Tiếng AnhTiếng PhápTiếng Việt

In - Giải quyết bài toán tháp Hanoi - JavaScriptBank.com

Phiên bản đầy đủ: jsB@nk » Trò chơi » Giải đố » Giải quyết bài toán tháp Hanoi
URL: https://www.javascriptbank.com/hanoi-solver.html

Giải quyết bài toán tháp Hanoi © JavaScriptBank.comTrò chơi JavaScript sẽ giúp bạn giải quyết bài toán tháp Hanoi.

Phiên bản đầy đủ: jsB@nk » Trò chơi » Giải đố » Giải quyết bài toán tháp Hanoi
URL: https://www.javascriptbank.com/hanoi-solver.html



JavaScript
<SCRIPT LANGUAGE="JavaScript">// Amin Wong (aminwong@hotmail.com)<!-- Beginvar MAXHEIGHT = 8;var ndisk;var timer = null;var mvfrom = new Array(255);var mvto = new Array(255);var mv, imv;var tower = new Array(3);var h = new Array(3);var spc = "        ";var dname = new Array("|","111","22222","3333333","444444444","55555555555","6666666666666","777777777777777","88888888888888888");function init() {if (!timer) {s = document.formHanoi.disk.options[document.formHanoi.disk.selectedIndex].value;if (s == "random") {now = new Date();ndisk = parseInt(now.getTime() / 1000) % 8 + 1;delete now;}else ndisk = s;mv = 0;hanoi(0, 2, 1, ndisk);for (i = 0; i < 3; i++)tower[i] = new Array(MAXHEIGHT);for (i = 0; i < ndisk; i++)tower[0][i] = ndisk - i;h[0] = ndisk;h[1] = h[2] = 0;imv = 0;document.formHanoi.display.value = gentower();timer = window.setTimeout("gennexttower()", document.formHanoi.delay.options[document.formHanoi.delay.selectedIndex].value);   }}function stop() {if (timer) {window.clearTimeout(timer);timer = null;   }}function hanoi(from,to,buf,nmv) {if (nmv > 1) {hanoi(from, buf, to, nmv - 1);mvfrom[mv] = from;mvto[mv++] = to;hanoi(buf, to, from, nmv - 1);}else {mvfrom[mv] = from;mvto[mv++] = to;   }}function gennexttower() {tower[mvto[imv]][h[mvto[imv]]++] = tower[mvfrom[imv]][--h[mvfrom[imv]]];document.formHanoi.display.value = gentower();if (++imv < mv)timer = window.setTimeout("gennexttower()", document.formHanoi.delay.options[document.formHanoi.delay.selectedIndex].value);else {for (i = 0; i < 3; i++)delete tower[i];timer = null;    }}function gentower() {s = " \n";for (i = MAXHEIGHT - 1; i >= 0; i--) {for (j = 0; j < tower.length; j++) {len = i < h[j] ? tower[j][i] : 0;width = MAXHEIGHT - len;s += " " + spc.substring(0, width) + dname[len] + spc.substring(0, width);}s += "\n";}return s+"=======================================================";}//  End --></script><!--    This script downloaded from www.JavaScriptBank.com    Come to view and download over 2000+ free javascript at www.JavaScriptBank.com-->


HTML
<form name=formHanoi><textarea name=display rows=10 cols=56></textarea><br><table border=0 cellspacing=10 cellpadding=0><tr><td>Number of disks</td><td><select name=disk><option selected value=random>Random<option value=1>1<option value=2>2<option value=3>3<option value=4>4<option value=5>5<option value=6>6<option value=7>7<option value=8>8</select></td></tr><tr><td>Movement delay</td><td><select name=delay><option value=100>100 milliseconds<option value=200>200 milliseconds<option value=300>300 milliseconds<option value=400>400 milliseconds<option selected value=500>500 milliseconds<option value=600>600 milliseconds<option value=700>700 milliseconds<option value=800>800 milliseconds<option value=900>900 milliseconds<option value=1000>1000 milliseconds</select></td></tr></table><input type=button value="Start" onClick="init();"><input type=button value="Stop" onClick="stop();"></form><!--    This script downloaded from www.JavaScriptBank.com    Come to view and download over 2000+ free javascript at www.JavaScriptBank.com-->