31 lines
774 B
JavaScript
31 lines
774 B
JavaScript
|
var pc = 0;
|
||
|
var registers = {a: 0, b: 0, c: 0, d: 0, e: 0, f: 0, g: 0, h: 0};
|
||
|
var instructions = require("fs").readFileSync("input.txt").toString().split("\n").filter((a)=>(a));
|
||
|
var numMul = 0;
|
||
|
while((pc >= 0) && (pc < instructions.length)){
|
||
|
val = a => ((isNaN(parseInt(a))) ? (registers[a]) : (parseInt(a)));
|
||
|
var instruction = instructions[pc];
|
||
|
var parts = instruction.split(" ");
|
||
|
var pcstart = pc;
|
||
|
switch(parts[0]){
|
||
|
case "set":
|
||
|
registers[parts[1]] = val(parts[2]);
|
||
|
break;
|
||
|
case "sub":
|
||
|
registers[parts[1]] -= val(parts[2]);
|
||
|
break;
|
||
|
case "mul":
|
||
|
numMul++;
|
||
|
registers[parts[1]] *= val(parts[2]);
|
||
|
break;
|
||
|
case "jnz":
|
||
|
if(val(parts[1]) != 0){
|
||
|
pc += (val(parts[2]) - 1);
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
pc++;
|
||
|
}
|
||
|
console.log(numMul);
|
||
|
console.log(registers);
|