gibney.org
:
Technology
:
Javascript
:
Experiments
:
Wortfalter
(Entry Nr. 2038, by user 1 |
edit
)
<div id=grid style="border: 1px solid red; width: 30em; height: 30em; font-family: monospace; font-size: 200%"></div> <a href=# onclick="stop()">stop</a> <script> function stop() { alert ("not yet implemented"); } function new_way(length) { r=[]; for (var i=0; i<length; i++) { r[i]=0; } return r; } function next_way(way) { var r=[]; var i=0; var ubertrag=0; r[i]=way[i]+1; if (r[i]>3) { r[i]=0; ubertrag++; } for (var i=1; i<way.length; i++) { r[i]=way[i]+ubertrag; ubertrag=0; if (r[i]>3) { r[i]=0; ubertrag++; } } return r; } function plot(grid,minX,maxX,minY,maxY) { r=""; for (var y=minY;y<maxY;y++) { for (var x=minX;x<maxX;x++) { if (grid[y][x]) r+=grid[y][x]; else r+="."; } r+="<br>"; } return r; } function step() { way=next_way(way); grid=[]; var x=0; var y=0; score=0; var minX=10; var minY=10; var maxX=-10; var maxY=-10; for (var i=0;i<sentence.length;i++) { if (way[i]==0) x++; if (way[i]==1) y++; if (way[i]==2) x--; if (way[i]==3) y--; if (x<minX) minX=x; if (x>maxX) maxX=x; if (y<minY) minY=y; if (y>maxY) maxY=y; if (!grid[y]) grid[y]=[]; if (grid[y][x]==sentence[i]) { score++; } else if (grid[y][x]!=undefined) { score=-1; break; } grid[y][x]=sentence[i]; } html_grid=plot(grid,minX,maxX,minY,maxY); if (score>=best_score) { best_score=score; best_grid=html_grid; } timestep++; } function metastep() { for (var i=0;i<100;i++) step(); setTimeout(metastep,0); } function info() { document.getElementById("grid").innerHTML="timestep: "+timestep+"<br>"+way+"<br>"+score+"<br>"+html_grid+"<br>best score: "+best_score+"<br>"+best_grid; } sentence="ALTER WORDFALTER"; way=new_way(sentence.length); best_score=0; best_grid=""; timestep=0; setInterval("info()",500); metastep(); </script>
Create a new entry at this position