advent of code 2025 in ts and nix
1const file = await Bun.file("../../shared/01/input.txt").text();
2
3(() => {
4 let dial = 50;
5 let count = 0;
6
7 file.split("\n").forEach((line) => {
8 const dir = line.startsWith("R"); // false is left
9 const num = Number.parseInt(line.substring(1), 10);
10
11 if (dir) dial += num;
12 else dial -= num;
13
14 dial %= 100;
15
16 if (dial === 0) count++;
17 });
18
19 console.log("part 1:", count);
20})();
21
22(() => {
23 let dial = 50;
24 let count = 0;
25
26 file.split("\n").forEach((line) => {
27 line = line.trim();
28 const dir = line[0]; // false is left
29 const num = Number.parseInt(line.substring(1), 10);
30
31 const dialBefore = dial;
32
33 let distToZero: number;
34 if (dir === "R") {
35 distToZero = (100 - dialBefore) % 100;
36 } else {
37 distToZero = dialBefore % 100;
38 }
39
40 if (distToZero === 0) distToZero = 100;
41
42 if (num >= distToZero) {
43 count += 1 + Math.floor((num - distToZero) / 100);
44 }
45
46 if (dir === "R") dial = (dialBefore + num) % 100;
47 else dial = (100 + dialBefore - (num % 100)) % 100;
48
49 dial = (100 + dial) % 100;
50 });
51
52 console.log("part 2:", count);
53})();