35 lines
807 B
JavaScript
35 lines
807 B
JavaScript
|
const { Glib } = require('../../lib');
|
||
|
|
||
|
const parse = (input) => Glib.fromLines(input).toInts().array;
|
||
|
|
||
|
module.exports = {
|
||
|
'1': (input) => {
|
||
|
const program = parse(input);
|
||
|
let programCounter = 0n;
|
||
|
let step = 0;
|
||
|
while (programCounter < program.length) {
|
||
|
const delta = program[programCounter];
|
||
|
program[programCounter]++;
|
||
|
programCounter += delta;
|
||
|
step++;
|
||
|
}
|
||
|
return step;
|
||
|
},
|
||
|
'2': (input) => {
|
||
|
const program = parse(input);
|
||
|
let programCounter = 0n;
|
||
|
let step = 0;
|
||
|
while (programCounter < program.length) {
|
||
|
const delta = program[programCounter];
|
||
|
if (delta >= 3n) {
|
||
|
program[programCounter]--;
|
||
|
} else {
|
||
|
program[programCounter]++;
|
||
|
}
|
||
|
programCounter += delta;
|
||
|
step++;
|
||
|
}
|
||
|
return step;
|
||
|
},
|
||
|
};
|