Published
Edited
Dec 4, 2019
Insert cell
Insert cell
Insert cell
answer = runProgram(startState(12,2));
Insert cell
function startState(noun, verb) {
const arr = [...inputArr];
arr[1] = noun;
arr[2] = verb;
return arr;
}
Insert cell
function runProgram(state) {
const startState = [...state];
const instructions = createOpcodes(state);
for(let i = 0; i < instructions.length; i++) {
const [op, pos1, pos2, position] = instructions[i];
const val1 = parseInt(startState[pos1], 10);
const val2 = parseInt(startState[pos2], 10);
if(op === "99") {
break;
}
if(op === "1") {
startState[position] = val1 + val2;
}
if(op === "2") {
startState[position] = val1 * val2;
}
}
return startState[0]
}
Insert cell
function createOpcodes(input) {
const arr = [];
const ops = 4;
for(let i = 0; i < input.length; i+=ops) {
arr.push(input.slice(i,i+ops))
}
return arr;
}
Insert cell
Insert cell
answer2 = {
const arr = [...Array(100).fill('x')];
let answer;
for(let noun = 0; noun < arr.length; noun++) {
for(let verb = 0; verb < arr.length; verb++) {
const val = runProgram(startState(noun,verb));
if (val === 19690720) {
answer = 100 * noun + verb;
break;
}
}
}
return answer;
}
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