»
AnglaisFrançaisVietnamien

Imprimer - Hanoi Solver - JavaScriptBank.com

Version complète: jsB@nk » Game » Puzzle » Hanoi Solver
URL: https://www.javascriptbank.com/hanoi-solver.html

Hanoi Solver © JavaScriptBank.comRésout les Tours de Hanoï jeu dans le plus court nombre de coups, de démonstration inclus. Le délai entre mouvements et le nombre de cycles peut être ajusté par l'utilisateur. Intelligent!

Version complète: jsB@nk » Game » Puzzle » Hanoi Solver
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-->