40 lines
902 B
JavaScript
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++;
|
|
}
|
|
|