advent of code 2025 in ts and nix
at main 1.3 kB view raw
1const file = await Bun.file("../../shared/02/input.txt").text(); 2 3const ranges: { start: number; end: number }[] = file 4 .split(",") 5 .map((range) => { 6 const splitRange = range.split("-"); 7 return { 8 start: Number.parseInt(splitRange[0] as string, 10), 9 end: Number.parseInt(splitRange[1] as string, 10), 10 }; 11 }); 12 13(() => { 14 let count = 0; 15 16 ranges.forEach((range) => { 17 for (let i = range.start; i <= range.end; i++) { 18 const numberString = i.toString(); 19 20 if (numberString.length % 2 === 1) continue; 21 22 const firstHalf = numberString.substring( 23 0, 24 (numberString.length + 1) / 2, 25 ); 26 const secondHalf = numberString.substring(numberString.length / 2); 27 28 if (firstHalf === secondHalf) count += i; 29 } 30 }); 31 32 console.log("part 1:", count); 33})(); 34 35(() => { 36 let count = 0; 37 38 ranges.forEach((range) => { 39 for (let i = range.start; i <= range.end; i++) { 40 const numberString = i.toString(); 41 42 for (let j = 1; j <= Math.floor(numberString.length / 2); j++) { 43 if (numberString.length % j !== 0) continue; 44 45 const chunk = numberString.slice(0, j); 46 47 let testString = ""; 48 for (let k = 0; k < numberString.length / j; k++) testString += chunk; 49 if (testString === numberString) { 50 count += i; 51 break; 52 } 53 } 54 } 55 }); 56 57 console.log("part 2:", count); 58})();