33 lines
742 B
JavaScript
33 lines
742 B
JavaScript
var grid = require("fs").readFileSync("input.txt").toString().split("\n").filter(a=>(a)).reverse().map(a=>(a.split("")));
|
|
var dirs = [[0, 1], [1, 0], [0, -1], [-1, 0]];
|
|
var dir = 0;
|
|
var x = Math.floor(grid.length/2);
|
|
var y = Math.floor(grid.length/2);
|
|
var numInfected = 0;
|
|
|
|
for(var i = 0; i < 10000000; i++){
|
|
var clean = true;
|
|
if(grid[y]){
|
|
if(!grid[y][x]){
|
|
grid[y][x] = ".";
|
|
}
|
|
}
|
|
else{
|
|
grid[y] = [];
|
|
grid[y][x] = ".";
|
|
}
|
|
|
|
var states = [".", "W", "#", "F"];
|
|
var dirChanges = [-1, 0, 1, 2];
|
|
dir += dirChanges[states.indexOf(grid[y][x])];
|
|
grid[y][x] = states[(states.indexOf(grid[y][x])+1) % 4];
|
|
if(grid[y][x] == "#"){
|
|
numInfected++;
|
|
}
|
|
|
|
dir = (dir+4)%4;
|
|
x += dirs[dir][0];
|
|
y += dirs[dir][1];
|
|
}
|
|
console.log(numInfected);
|