Public
Edited
Dec 10, 2022
1 fork
1 star
Insert cell
Insert cell
Insert cell
cycles = d3.map(run(program), (sprite, cycle) => {
const position = (cycle - 1) % 40;
return {
cycle,
position,
crt: sprite - 1 <= position && position <= sprite + 1
};
}).slice(1)
Insert cell
part1 = d3.sum(signal(program), ([i, x]) => i * x)
Insert cell
d3.map(signal(program), ([i, x]) => [i, x])
Insert cell
function* signal(program) {
let i = 0;
for (const X of run(program)) {
if (i === 20 || ((i - 20) % 40 === 0))
yield [i, X];
i++;
}
}
Insert cell
function* run(program) {
let X = 1;
yield X;
for (const instruction of program) {
const [op, arg] = instruction.split(" ");
switch (op) {
case "noop":
yield X;
break;
case "addx":
yield X;
yield X;
X += +arg;
break;
}
}
}
Insert cell
program = data.trim().split("\n")
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