diff options
Diffstat (limited to 'aoc_2022/day-10/part_1.ts')
-rw-r--r-- | aoc_2022/day-10/part_1.ts | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/aoc_2022/day-10/part_1.ts b/aoc_2022/day-10/part_1.ts new file mode 100644 index 0000000..02bcb47 --- /dev/null +++ b/aoc_2022/day-10/part_1.ts @@ -0,0 +1,45 @@ +const cycles = (instruction: string): number => { + if (instruction === "noop") return 1; + if (instruction === "addx") return 2; + return 0; +}; + +export const main = async (lines: string[]): Promise<number | string> => { + const instructions = lines.map((line) => line.split(" ")); + let signalStrength = 0; + let cycle = 0; + const registers = { x: 1 }; + + for (const [instruction, operand] of instructions) { + const instCycles = cycles(instruction); + for (let i = 0; i < instCycles; i++) { + cycle++; + if (cycle >= 20 && (cycle - 20) % 40 === 0) { + signalStrength += registers.x * cycle; + } + } + + if (instruction === "addx") { + registers.x += parseInt(operand); + } + } + return signalStrength; +}; + +// + +const isrun = process.argv.length > 1 && process.argv[1] === import.meta.path; +if (isrun) { + const file = Bun.file("./problem.txt"); + const text = await file.text(); + const lines = text.split("\n"); + + console.log("=== COMPUTATION ===\n"); + + const answer = await main(lines); + + console.log("\n=== /COMPUTATION ===\n"); + + console.log("=== ANSWER TO P1 ==="); + console.log(answer); +} |