脚本说明: 第一步:把如下代码加入<head>区域中 <SCRIPT LANGUAGE="JavaScript"> <!-- Original: 陆晓庆 (xiaoqinglu@263.net) -->
<!-- Begin var 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>
第二步:把如下代码加入<body>区域中 <form name=formHanoi> <textarea name=display rows=10 cols=56></textarea><br> <table border=0 cellspacing=10 cellpadding=0> <tr> <td>堆积层数</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>延迟时间</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>
|