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++; }