//record = 1000000 function arrayEquals(a, b) { return Array.isArray(a) && Array.isArray(b) && a.length === b.length && a.every((val, index) => val === b[index]); } //boardSize = 45 xs = 45 ys = 15 x = 20 y = 5 oldX = x oldY = y function NW(pair) { // press W X=pair[0]; Y=pair[1]; if (Y%2 == 0) { X -= 1; if (X<0){X=0;} } Y -= 1; if (Y < 0) {Y=0;} return [X,Y] } function R(pair) { // press d X=pair[0]; Y=pair[1]; X += 1; if (X>xs - 1) {X=xs - 1;} return [X,Y] } function L(pair) { // press a X=pair[0]; Y=pair[1]; X -= 1; if (X<0) {X = 0;} return [X,Y] } function NE(pair) { // press E X=pair[0]; Y=pair[1]; if (Y%2 == 1) { X += 1; if (X>xs-1){X=xs-1;} } Y -= 1; if (Y < 0) {Y=0;} return [X,Y] } function SW(pair) { // press Z X=pair[0]; Y=pair[1]; if (Y%2 == 0) { X -= 1; if (X<0){X=0;} } Y += 1; if (Y>= ys) {Y=ys - 1;} return [X,Y] } function SE(pair) { // press x X=pair[0]; Y=pair[1]; if (Y%2 == 1) { X += 1; if (X>xs-1){X=xs-1;} } Y += 1; if (Y>= ys) {Y=ys - 1;} return [X,Y] } function nearby(u,v) { if (arrayEquals(u, SE(v))) { return true; } if (arrayEquals(u, SW(v))) { return true; } if (arrayEquals(u, NE(v))) { return true; } if (arrayEquals(u, NW(v))) { return true; } if (arrayEquals(u, L(v))) { return true; } if (arrayEquals(u, R(v))) { return true; } return false; } $(document).ready( function(){ places = document.getElementsByClassName('digits').length // must match "places" in drc.go for (place=0; place