adventofcode-2017/day18/part1.js
2017-12-25 23:22:40 +00:00

40 lines
902 B
JavaScript

var pc = 0;
var registers = {};
var lastsnd = 0;
var instructions = require("fs").readFileSync("input.txt").toString().split("\n").filter((a)=>(a));
while((pc >= 0) && (pc < instructions.length)){
val = a => ((isNaN(parseInt(a))) ? (registers[a]) : (parseInt(a)));
var instruction = instructions[pc];
var parts = instruction.split(" ");
switch(parts[0]){
case "snd":
lastsnd = val(parts[1]);
break;
case "set":
registers[parts[1]] = val(parts[2]);
break;
case "add":
registers[parts[1]] += val(parts[2]);
break;
case "mul":
registers[parts[1]] *= val(parts[2]);
break;
case "mod":
registers[parts[1]] = registers[parts[1]] % val(parts[2]);
break;
case "rcv":
if(val(parts[1]) != 0){
console.log(lastsnd);
pc = instructions.length;
}
break;
case "jgz":
if(val(parts[1]) > 0){
pc += (val(parts[2]) - 1);
}
break;
}
pc++;
}