git-subtree-dir: 2020 git-subtree-mainline:ab8f135946
git-subtree-split:aaabfa90c9
39 lines
666 B
JavaScript
39 lines
666 B
JavaScript
const fs = require('fs');
|
|
|
|
function parseLine(line) {
|
|
let [ op, offset ] = line.split(' ');
|
|
|
|
return { op: op, offset: Number(offset), visited: false };
|
|
}
|
|
|
|
fs.readFile('input', (err, data) => {
|
|
if (err) throw err;
|
|
let program = data.toString().split("\n").map( parseLine ).flat();
|
|
|
|
let acc = 0;
|
|
let pc = 0;
|
|
|
|
while (true) {
|
|
let insn = program[pc];
|
|
if (insn.visited) {
|
|
console.log(acc);
|
|
break;
|
|
}
|
|
|
|
insn.visited = true;
|
|
|
|
switch (insn.op) {
|
|
case 'nop':
|
|
pc++;
|
|
break;
|
|
case 'jmp':
|
|
pc = pc + insn.offset;
|
|
break;
|
|
case 'acc':
|
|
acc = acc + insn.offset;
|
|
pc++;
|
|
break;
|
|
}
|
|
}
|
|
});
|