summaryrefslogtreecommitdiff
path: root/aoc_2022/day-10/part_1.ts
diff options
context:
space:
mode:
Diffstat (limited to 'aoc_2022/day-10/part_1.ts')
-rw-r--r--aoc_2022/day-10/part_1.ts45
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);
+}