JSFiddle - React, Tailwind, and code Playground

by Andy Novocin

HTML

<span id="m"></span>

JavaScript

var boardseed = "10:5:.....*****.....*****$$$$$XXXXX$$$$$XXXXX.....*****";
var dims = boardseed.split(':');
var vals = dims.splice(2,1)[0];
dims = dims.splice(0,2);
var board = vals.split("");
for (var i in dims) {
    $("#m").append(dims[i]).append("<br/>");
}
$("#m").append(vals).append("<br/>");
/*for (var i in board){
     $("#m").append(board[i]).append("<br/>");   
}*/

var sensor = function(w,h,board,x,y){
    var sq_value = function(w, h, board, x, y){
        if (x < 0 || y < 0 || x >= h || y >= w){
            return "*";   
        }
        return board[x*w + y];
    };
    var values = ["*","$","X"];
    var delts = [0, 1, 2, 3];
    var close = [[],[],[],[]];
    var far = [[],[],[],[]];
    var quadrant = [[-1,-1], [-1,1], [1,-1], [1,1]];
    for (var di in delts){
        for (var dj in delts){
            for (var qi in quadrant){
                var xs = quadrant[qi][0];
                var ys = quadrant[qi][1];
                var dx = delts[di];
                var dy = delts[dj];
                if (dx == 0 && dy == 0){
                    break;
                } else if (dx > 1 || dy > 1){
                    far[qi].push(sq_value(w,h,board,x+xs*dx, y+ys*dy));
                } else {
                    close[qi].push(sq_value(w,h,board,x+xs*dx, y+ys*dy));
                }
            }
        }
    }
    var senses = [];
    for (var vi in values){
        var value = values[vi];
        for (var ci in close){
            var cvals = close[ci];
            var inarr = $.inArray(value, cvals);
            senses.push(inarr == -1 ? 0 : 1);
        }
        for (var fi in far){
            var fvals = far[fi];
            var inarr = $.inArray(value, fvals);
            senses.push(inarr == -1 ? 0 : 1);
        }
    }
    return senses;
}