advent of code 2025 in ts and nix
at main 1.1 kB view raw
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})();