Published
Edited
Dec 2, 2019
Insert cell
Insert cell
Insert cell
Insert cell
runProgram = function(program) {
let pos = 0;
let opcode = program[pos];
while (opcode !== 99) {
const a = program[program[pos+1]];
const b = program[program[pos+2]];
switch (opcode) {
case 1: // add
program[program[pos+3]] = a + b;
break;
case 2: // multiply
program[program[pos+3]] = a * b;
break;
default:
throw new Error('Invalid Opcode');
}
pos += 4;
opcode = program[pos];
}
return program;
}
Insert cell
{
// clone the input so we don't modify it
const program = input.slice(0);
program[1] = 12;
program[2] = 2;
return runProgram(program)[0];
}
Insert cell
Insert cell
{
// clone the input so we don't modify it
const program = input.slice(0);
// this is multiplied into the end product
program[1] = 0;
// this is added to the end product
program[2] = 0;
const target = 19690720;
// increase program[1] until we go over, then increase program[2] to target
let output = runProgram(program.slice(0))[0];
while (output < target) {
program[1]++;
output = runProgram(program.slice(0))[0];
}
program[1]--;
program[2] = target - runProgram(program.slice(0))[0];
return 100 * program[1] + program[2];
}
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