Public
Edited
Dec 1, 2023
Insert cell
Insert cell
Insert cell
function parse(input) {
return input.split("\n").map((line) => {
const [reg, op, delta, , cReg, cOp, cVal] = line.split(/\s+/);
return { reg, op, delta: Number(delta), cReg, cOp, cVal: Number(cVal) };
});
}
Insert cell
Insert cell
function largestRegisterValue(instrs) {
const registers = {};
let maxVal = -Infinity;

for (const { reg, op, delta, cReg, cOp, cVal } of instrs) {
registers[reg] = registers[reg] ?? 0;
registers[cReg] = registers[cReg] ?? 0;

if (new Function(`return ${registers[cReg]} ${cOp} ${cVal}`)()) {
registers[reg] += op === "inc" ? delta : -delta;
maxVal = Math.max(maxVal, registers[reg]);
}
}
return { maxReg: Math.max(...Object.values(registers)), max: maxVal };
}
Insert cell
function part1(input) {
return largestRegisterValue(parse(input)).maxReg;
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
function part2(input) {
return largestRegisterValue(parse(input)).max;
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more