diff --git a/10/code.js b/10/code.js new file mode 100644 index 0000000..9b5f409 --- /dev/null +++ b/10/code.js @@ -0,0 +1,68 @@ +const fs = require('fs'); + +//const inputArray = fs.readFileSync('sample.txt').toString().split("\n"); +const inputArray = fs.readFileSync('input.txt').toString().split("\n"); + +// Part One + +let x = 1; +let cycle = 0; +let samples = []; + +for (i in inputArray) { + cycle++; + getSample(); + const contents = inputArray[i].split(" "); + const instruction = contents[0]; + if (instruction === 'addx') { + cycle++; + getSample(); + x += parseInt(contents[1], 10); + } +} + +const countedSamples = samples.slice(0, 7); +console.log(countedSamples.reduce((partialSum, a) => partialSum + a, 0)); + + +// Part Two + +x = 1; +cycle = 0; +let pixels = []; + +for (i in inputArray) { + cycle++; + setPixel(); + const contents = inputArray[i].split(" "); + const instruction = contents[0]; + if (instruction === 'addx') { + cycle++; + setPixel(); + x += parseInt(contents[1], 10); + } +} + +const screen = []; +for (let i = 0; i < 6; i++) { + const line = pixels.slice(i * 40, (i + 1) * 40).join(''); + screen.push(line) +} +console.log(screen); + +// functions + +function getSample() { + if (cycle === 20 || (cycle - 20) % 40 === 0) { + samples.push(cycle * x); + } +} + +function setPixel() { + const position = cycle % 40; + if (position >= x && position <= x + 2) { + pixels.push('#'); + } else { + pixels.push('.'); + } +} diff --git a/10/input.txt b/10/input.txt new file mode 100644 index 0000000..3b7250a --- /dev/null +++ b/10/input.txt @@ -0,0 +1,139 @@ +noop +noop +noop +addx 5 +noop +addx 1 +addx 2 +addx 5 +addx 2 +addx 1 +noop +addx 5 +noop +addx -1 +noop +addx 5 +noop +noop +addx 5 +addx 1 +noop +noop +addx 3 +addx 2 +noop +addx -38 +noop +addx 3 +addx 2 +addx -5 +addx 12 +addx 2 +addx 27 +addx -40 +addx 19 +addx 2 +addx 19 +addx -18 +addx 2 +addx 5 +addx 2 +addx -23 +addx 22 +addx 4 +addx -34 +addx -1 +addx 5 +noop +addx 2 +addx 1 +addx 20 +addx -17 +noop +addx 25 +addx -17 +addx -2 +noop +addx 3 +addx 19 +addx -12 +addx 3 +addx -2 +addx 3 +addx 1 +noop +addx 5 +noop +noop +addx -37 +addx 3 +addx 4 +noop +addx 24 +addx -6 +addx -15 +addx 2 +noop +addx 6 +addx -2 +addx 6 +addx -12 +addx -2 +addx 19 +noop +noop +noop +addx 3 +noop +addx 7 +addx -2 +addx -24 +addx -11 +addx 4 +addx 3 +addx -2 +noop +addx 7 +addx -2 +addx 2 +noop +addx 3 +addx 7 +noop +addx -2 +addx 5 +addx 2 +addx 5 +noop +noop +noop +addx 3 +addx -35 +addx 35 +addx -21 +addx -14 +noop +addx 5 +addx 2 +addx 33 +addx -7 +addx -23 +addx 5 +addx 2 +addx 1 +noop +noop +addx 5 +addx -1 +noop +addx 3 +addx -23 +addx 30 +addx 1 +noop +addx 4 +addx -17 +addx 11 +noop +noop \ No newline at end of file diff --git a/10/sample.txt b/10/sample.txt new file mode 100644 index 0000000..94cd0a8 --- /dev/null +++ b/10/sample.txt @@ -0,0 +1,146 @@ +addx 15 +addx -11 +addx 6 +addx -3 +addx 5 +addx -1 +addx -8 +addx 13 +addx 4 +noop +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx -35 +addx 1 +addx 24 +addx -19 +addx 1 +addx 16 +addx -11 +noop +noop +addx 21 +addx -15 +noop +noop +addx -3 +addx 9 +addx 1 +addx -3 +addx 8 +addx 1 +addx 5 +noop +noop +noop +noop +noop +addx -36 +noop +addx 1 +addx 7 +noop +noop +noop +addx 2 +addx 6 +noop +noop +noop +noop +noop +addx 1 +noop +noop +addx 7 +addx 1 +noop +addx -13 +addx 13 +addx 7 +noop +addx 1 +addx -33 +noop +noop +noop +addx 2 +noop +noop +noop +addx 8 +noop +addx -1 +addx 2 +addx 1 +noop +addx 17 +addx -9 +addx 1 +addx 1 +addx -3 +addx 11 +noop +noop +addx 1 +noop +addx 1 +noop +noop +addx -13 +addx -19 +addx 1 +addx 3 +addx 26 +addx -30 +addx 12 +addx -1 +addx 3 +addx 1 +noop +noop +noop +addx -9 +addx 18 +addx 1 +addx 2 +noop +noop +addx 9 +noop +noop +noop +addx -1 +addx 2 +addx -37 +addx 1 +addx 3 +noop +addx 15 +addx -21 +addx 22 +addx -6 +addx 1 +noop +addx 2 +addx 1 +noop +addx -10 +noop +noop +addx 20 +addx 1 +addx 2 +addx 2 +addx -6 +addx -11 +noop +noop +noop \ No newline at end of file