From f4425c3fbf8e9f0d71f5ae208e762878b51bb0ae Mon Sep 17 00:00:00 2001 From: Naomi Carrigan Date: Tue, 2 Dec 2025 11:43:39 -0800 Subject: [PATCH] feat: advent of code day one --- src/advent-of-code/2025/day1/inputOne.txt | 4487 +++++++++++++++++++++ src/advent-of-code/2025/day1/main.spec.ts | 44 + src/advent-of-code/2025/day1/main.ts | 72 + 3 files changed, 4603 insertions(+) create mode 100644 src/advent-of-code/2025/day1/inputOne.txt create mode 100644 src/advent-of-code/2025/day1/main.spec.ts create mode 100644 src/advent-of-code/2025/day1/main.ts diff --git a/src/advent-of-code/2025/day1/inputOne.txt b/src/advent-of-code/2025/day1/inputOne.txt new file mode 100644 index 0000000..98c6e8d --- /dev/null +++ b/src/advent-of-code/2025/day1/inputOne.txt @@ -0,0 +1,4487 @@ +L3 +R49 +R11 +L18 +R41 +L49 +R40 +R38 +R8 +L8 +L14 +L45 +R38 +L46 +R45 +R37 +R24 +L43 +L45 +L44 +L2 +R22 +R8 +R50 +R49 +L25 +L36 +R44 +L23 +L22 +L9 +R17 +L37 +L44 +L32 +L22 +R26 +R32 +R13 +R20 +L23 +R35 +L7 +L35 +L28 +L47 +L6 +L1 +R38 +R17 +R12 +R88 +R92 +L89 +L41 +L76 +L81 +R63 +L92 +L69 +R55 +L42 +R39 +R70 +R64 +L31 +L63 +L37 +L68 +R68 +R62 +L24 +L38 +R9 +L5 +L4 +R9 +R91 +R93 +L34 +R10 +R31 +L2 +L98 +L48 +L2 +L72 +L78 +L93 +R93 +L5 +L38 +L84 +L4 +L69 +R44 +L78 +R34 +R24 +L1 +L37 +L135 +R44 +R639 +R19 +L53 +L617 +R17 +L4 +R4 +R1 +R179 +L80 +L707 +L46 +L29 +R56 +L74 +L17 +L983 +L98 +R98 +L59 +R65 +R94 +R13 +R16 +R79 +R57 +L65 +R2 +L502 +R40 +L63 +L37 +L81 +R41 +L176 +L78 +R531 +R523 +L76 +L124 +R8 +L8 +R37 +L28 +L43 +L58 +R75 +R254 +L737 +R14 +R29 +R59 +R98 +L83 +R85 +L67 +R65 +R23 +L95 +L80 +L43 +R95 +R45 +R55 +R65 +R43 +R57 +L65 +R62 +L62 +L89 +R82 +L93 +L44 +R44 +R82 +R5 +L20 +L67 +L39 +L61 +R248 +L69 +R614 +R76 +L69 +L73 +R73 +R75 +L9 +L66 +L74 +R62 +L50 +L94 +L66 +R96 +L727 +L71 +L371 +L515 +L90 +L946 +R94 +L31 +R83 +R23 +L67 +R44 +R65 +L565 +R56 +L990 +R223 +L489 +R12 +R75 +L56 +R69 +R52 +R21 +L23 +L71 +L12 +R78 +R55 +L25 +L805 +L25 +L725 +L420 +L35 +R49 +L14 +R44 +R5 +R8 +R11 +R32 +R32 +R3 +L69 +R32 +R902 +L1 +R1 +R43 +L62 +R319 +L61 +R52 +L191 +L72 +L95 +R67 +R73 +L91 +R706 +R12 +L56 +L59 +L685 +L83 +R83 +R15 +L60 +L56 +R1 +R46 +L79 +L77 +R10 +R86 +R846 +R568 +L76 +R76 +R45 +R55 +L19 +R67 +R81 +L129 +R54 +L16 +R46 +R81 +L62 +L61 +L942 +R57 +R43 +R6 +L18 +R795 +L786 +R21 +L923 +L405 +L75 +R98 +L32 +L778 +R497 +L86 +R71 +R94 +R56 +L95 +R53 +R9 +L91 +R25 +L536 +R72 +L72 +L88 +L732 +R28 +L8 +R577 +L829 +L76 +R76 +L48 +L22 +L678 +R679 +R21 +L34 +R63 +R88 +R207 +R76 +L59 +R79 +R70 +R1 +L74 +L24 +L190 +L89 +L56 +R42 +R25 +L81 +L93 +R893 +L43 +R64 +L606 +R70 +L17 +L60 +R533 +L21 +L74 +R337 +R72 +L75 +L24 +L85 +L62 +R94 +R753 +L657 +L43 +L119 +L57 +L695 +L29 +L23 +R2 +R483 +L51 +L74 +L637 +R33 +R67 +R68 +L21 +L523 +R576 +L56 +L44 +L73 +L73 +L54 +R54 +R946 +R24 +L24 +L194 +L27 +L72 +R88 +L95 +R64 +L28 +R7 +R32 +L13 +R38 +R48 +R401 +R84 +L89 +R59 +L26 +L55 +R78 +L330 +L295 +L48 +R28 +R56 +R89 +L47 +R32 +R17 +L81 +L21 +R575 +L69 +L6 +R88 +L88 +R227 +L67 +L590 +L15 +R37 +R19 +R999 +L85 +L45 +R546 +R74 +L26 +L74 +R6 +L776 +R70 +L41 +L76 +R66 +L49 +L23 +R399 +R67 +R17 +L95 +L23 +R58 +R748 +L48 +L65 +L35 +R35 +R65 +L30 +L70 +L47 +L953 +L94 +L56 +R268 +R82 +L30 +R21 +L12 +L42 +R543 +L80 +R62 +R18 +L11 +R31 +R21 +L7 +R12 +R10 +R21 +R384 +R59 +L45 +R95 +L250 +L18 +R711 +R7 +R97 +L97 +R4 +L4 +L80 +L66 +L54 +L69 +R545 +R95 +L8 +L63 +R64 +R36 +R29 +L63 +R25 +L5 +L34 +R48 +L65 +L35 +R94 +L29 +L67 +R2 +L79 +R96 +R74 +L91 +L37 +R40 +L3 +R96 +R4 +R349 +R51 +L9 +R99 +R10 +L461 +R65 +R81 +L17 +R37 +R95 +L53 +R53 +L55 +L45 +R93 +L19 +R50 +R14 +R93 +R18 +L949 +R204 +L89 +R70 +L503 +R18 +R37 +L37 +L46 +L94 +R8 +L45 +R96 +R74 +L496 +L62 +L40 +L24 +L71 +R69 +R213 +L647 +R391 +L30 +R59 +R19 +L24 +L8 +L36 +L870 +R74 +L108 +L90 +R158 +R60 +R47 +L677 +L55 +R653 +L16 +R18 +R15 +R85 +L78 +R978 +R74 +R26 +R26 +R74 +R97 +L44 +L1 +R48 +R66 +L66 +L63 +R868 +L34 +L71 +L81 +R181 +R26 +L16 +R60 +L70 +L25 +R99 +R227 +L42 +L42 +L33 +R50 +R94 +L859 +R431 +L313 +R64 +R69 +R80 +R69 +R31 +L10 +R10 +L94 +L1 +R440 +L45 +L66 +L952 +R14 +R439 +R65 +R22 +R31 +L219 +L68 +L39 +R91 +L18 +L87 +R8 +R92 +R14 +R60 +R94 +R3 +R916 +R68 +R62 +R70 +R19 +R66 +L85 +R5 +L604 +R64 +L6 +R52 +R95 +R78 +L84 +R2 +R98 +L94 +R194 +L71 +R310 +R844 +L62 +L42 +R13 +L1 +R615 +L6 +R438 +L38 +R142 +R66 +L2 +L58 +R66 +L89 +R75 +R54 +L54 +L88 +R735 +L32 +L15 +R553 +R476 +R95 +L572 +L29 +L23 +R11 +L54 +L57 +L87 +R42 +R30 +L85 +L773 +L19 +R538 +R54 +R580 +R61 +L6 +R65 +L1 +L179 +R84 +L39 +R24 +L38 +L59 +L40 +L75 +L71 +L506 +R6 +R29 +R4 +R861 +L788 +L12 +R46 +R75 +L820 +L1 +L60 +R60 +L51 +L58 +L91 +R80 +R47 +R42 +L6 +R87 +R379 +L80 +R51 +R49 +R41 +R96 +L81 +L5 +L78 +L27 +R905 +L39 +R49 +R890 +L85 +R485 +L82 +L481 +L362 +R95 +L14 +L71 +R253 +R24 +L17 +R18 +L63 +L96 +L60 +R56 +R73 +L73 +R497 +L16 +R63 +L44 +L454 +R421 +R81 +L664 +L12 +R28 +R69 +R31 +L805 +L33 +L46 +R84 +L281 +L5 +L553 +L12 +R76 +L520 +L565 +L650 +R374 +L76 +R12 +R141 +R59 +R96 +R91 +R27 +L23 +L91 +R5 +L26 +L20 +L613 +R61 +L33 +R26 +R16 +R84 +R76 +R52 +R878 +R43 +R10 +L847 +L758 +R43 +L20 +L47 +L10 +R80 +R75 +R25 +L84 +R84 +R88 +L838 +L250 +L505 +R40 +R9 +L33 +L63 +L553 +L87 +L88 +L41 +R21 +R443 +L435 +L58 +R86 +L75 +R74 +L97 +L38 +R80 +L91 +R511 +R204 +R96 +R167 +R33 +L69 +L46 +L85 +L88 +R88 +L945 +R91 +R54 +L774 +R458 +R857 +R506 +L47 +L40 +L478 +L82 +R46 +L46 +R51 +L51 +L50 +R50 +L74 +L26 +R12 +R88 +L72 +L883 +R55 +L936 +L911 +L53 +L76 +L92 +R966 +R69 +R60 +R973 +L19 +L49 +L464 +R310 +L882 +R3 +R62 +L25 +L34 +L102 +L27 +R27 +R788 +L788 +L90 +R95 +L5 +R605 +R9 +R81 +L95 +L74 +L626 +R67 +R33 +R75 +L44 +L44 +L87 +R30 +L14 +R32 +R52 +R37 +R204 +L69 +R27 +R52 +L38 +R24 +L37 +L71 +R2 +L5 +R63 +L789 +L75 +L15 +R82 +L98 +L24 +R30 +R56 +R442 +R88 +L17 +R31 +R10 +L18 +R31 +R60 +R41 +L24 +R87 +R13 +R5 +R16 +R83 +L28 +L76 +L58 +R58 +R66 +R27 +R28 +L49 +R28 +L17 +R57 +L260 +L80 +L64 +L308 +R72 +L5 +L40 +R29 +R12 +L25 +R45 +L48 +R142 +R897 +R805 +L53 +L59 +R3 +L3 +R52 +R48 +L47 +R12 +R42 +R93 +L29 +R29 +R19 +R81 +R63 +L23 +L40 +R9 +R69 +L79 +R1 +L386 +R674 +R56 +R31 +L30 +L97 +R67 +L15 +R62 +R38 +R6 +R65 +R29 +R775 +L44 +R69 +L661 +R89 +L92 +R50 +L165 +L511 +R923 +L122 +L192 +L69 +R19 +R31 +L225 +R149 +R76 +L14 +R14 +L593 +L237 +R73 +R97 +L185 +R83 +R54 +R49 +L67 +R79 +L77 +R8 +R516 +R57 +L1 +L45 +L11 +R66 +L65 +L1 +R79 +R36 +R41 +L12 +L36 +L8 +L97 +R97 +L92 +L17 +L65 +L64 +L56 +L19 +R63 +R432 +R18 +L49 +R49 +L12 +R89 +L46 +R57 +L84 +L19 +R40 +R690 +L67 +L91 +L57 +R91 +L72 +L70 +L15 +L24 +R90 +L9 +R134 +L40 +L36 +R251 +L69 +L969 +L81 +R19 +R76 +L76 +R13 +L94 +L4 +R5 +L948 +R6 +R31 +L2 +R59 +R5 +R29 +R197 +R173 +L70 +L513 +L57 +L34 +L44 +L89 +L63 +L455 +L28 +R259 +L76 +R964 +L57 +R9 +L16 +L71 +L75 +R43 +L61 +L36 +L10 +R10 +L83 +L17 +R1 +L95 +R485 +R54 +L56 +L67 +R8 +R36 +R89 +R902 +L57 +R352 +L52 +R77 +R23 +R45 +L8 +R2 +R19 +L58 +L58 +L42 +L4 +L873 +R90 +R53 +R34 +L21 +R271 +R39 +R11 +L45 +R40 +L95 +R246 +L46 +L99 +R99 +R192 +L20 +R68 +L26 +R86 +R65 +L30 +L35 +R51 +L144 +R93 +R258 +L7 +R49 +L54 +L872 +L74 +L80 +R80 +L17 +R17 +R82 +L82 +L87 +R87 +R317 +R82 +L99 +R48 +L96 +R48 +R95 +R5 +L38 +R38 +R40 +R60 +R427 +L1 +R91 +L45 +R528 +R94 +R33 +R29 +L56 +L247 +R183 +L69 +R97 +L32 +L32 +L33 +R33 +R25 +R75 +R63 +R37 +R22 +L69 +L53 +L96 +L4 +L83 +L17 +L616 +L84 +L60 +R60 +L17 +R17 +L70 +R50 +R20 +R67 +R85 +L52 +L788 +R4 +R79 +R5 +R860 +L53 +R93 +L51 +R75 +R76 +L66 +L80 +R47 +L78 +R56 +L26 +L953 +R96 +L254 +R58 +L92 +R554 +L23 +R80 +L34 +R2 +R213 +L66 +L80 +R67 +L12 +L609 +L95 +R895 +R637 +R40 +R65 +R932 +R87 +L78 +L32 +R49 +L356 +R98 +L42 +L790 +L46 +L68 +L96 +L63 +L618 +L19 +L13 +L15 +L72 +R78 +R69 +R453 +R31 +R843 +L37 +R63 +R99 +L95 +L4 +L740 +L60 +L139 +R82 +R57 +R256 +R644 +L35 +L65 +L141 +L385 +L762 +L212 +R38 +L786 +R30 +L88 +R90 +L84 +R787 +R30 +R556 +L62 +R89 +R22 +R21 +R35 +R22 +R38 +R62 +R87 +L687 +L69 +L31 +R71 +L571 +L92 +R62 +R679 +R51 +L331 +R331 +L861 +L3 +R749 +L185 +L80 +R32 +R87 +R78 +R179 +R520 +L16 +L57 +R857 +L611 +R56 +L45 +R394 +L87 +L18 +R6 +R5 +L59 +L151 +L330 +R30 +L24 +L54 +L12 +L193 +L7 +R74 +R35 +R30 +L39 +L54 +R66 +R17 +L63 +R34 +L21 +L79 +R78 +R10 +L32 +R42 +L598 +L431 +R830 +L978 +R79 +L39 +R39 +R414 +L63 +R92 +R57 +L135 +R35 +L23 +L8 +L69 +L5 +R77 +R27 +L894 +R95 +L526 +R26 +R88 +R73 +R9 +R80 +L50 +R5 +L905 +L71 +L4 +R40 +L43 +L22 +L91 +L9 +L12 +R19 +L75 +L32 +L68 +R68 +L120 +R20 +L19 +L312 +L19 +R50 +R1 +R699 +L66 +L34 +R73 +R27 +R90 +L44 +R54 +L27 +R65 +L478 +L760 +L35 +L19 +R72 +L64 +R47 +R45 +L90 +L56 +L28 +R78 +R28 +R240 +R67 +L85 +R2 +L36 +L66 +L535 +L27 +R37 +R25 +L94 +R57 +L62 +R99 +R96 +R43 +L833 +L93 +R16 +R87 +R56 +R92 +R16 +R99 +R21 +L18 +R18 +L89 +L11 +L29 +R29 +R91 +L91 +R14 +L91 +R77 +L28 +L50 +L162 +R72 +R29 +R90 +L63 +L924 +R250 +L560 +L54 +R89 +L51 +L8 +R70 +L54 +R75 +R263 +L7 +R23 +L87 +L180 +L15 +L18 +R372 +R28 +L51 +R13 +R3 +R135 +L98 +L99 +R97 +R84 +R16 +L40 +R67 +R763 +L30 +R10 +R70 +R60 +R605 +L69 +L536 +L76 +L760 +L64 +L4 +L478 +L574 +R62 +L6 +R414 +L14 +R48 +L563 +R15 +R77 +R23 +L45 +R845 +R44 +R53 +R3 +L69 +L2 +L45 +L70 +R86 +L52 +R77 +R44 +R67 +R36 +R5 +L95 +R18 +R33 +R25 +L58 +R95 +L26 +R88 +L57 +R27 +L27 +R951 +R76 +R373 +L2 +L76 +R78 +L580 +R480 +L1 +L19 +L124 +L73 +L9 +L175 +L99 +R49 +R94 +R57 +L15 +L69 +L816 +R61 +L65 +R225 +L63 +L372 +L147 +R61 +R22 +L8 +R27 +L34 +R76 +R17 +R52 +L52 +L655 +R83 +L10 +R48 +R234 +L325 +L75 +R88 +R912 +L97 +L10 +R7 +R44 +R52 +R56 +R48 +R77 +R413 +R610 +R25 +L60 +R82 +L1 +R30 +R847 +R61 +L84 +L93 +L634 +R40 +L69 +L639 +R20 +R75 +R50 +L52 +R921 +L97 +R78 +L16 +L2 +R56 +R37 +R61 +R64 +L42 +R14 +L75 +R78 +L75 +R457 +L60 +R53 +L26 +R39 +R337 +L60 +L440 +R36 +R61 +L97 +R6 +R821 +R73 +L42 +L76 +L26 +L33 +R95 +L18 +L81 +R81 +L9 +L11 +R98 +L6 +L66 +R63 +R67 +L36 +L16 +L67 +R783 +R602 +R18 +L20 +L21 +R889 +R32 +R110 +R93 +L74 +L29 +R53 +L24 +L63 +R250 +L716 +R68 +R96 +R36 +L62 +L38 +R824 +R76 +L64 +L36 +L39 +R39 +L44 +L462 +R6 +L84 +L99 +L19 +L98 +L12 +R52 +R79 +L967 +R48 +R55 +R72 +L98 +L125 +L14 +L604 +L86 +L41 +L36 +R7 +L85 +L12 +L933 +R21 +L81 +L672 +L30 +L38 +L8 +L92 +R83 +L83 +L429 +R29 +L476 +L24 +L4 +R22 +R36 +R749 +R979 +L17 +R35 +R54 +R41 +R5 +R130 +R841 +L71 +R86 +R61 +L381 +R459 +R75 +L14 +L11 +R66 +L41 +R27 +L39 +L88 +L95 +R14 +R53 +L43 +L46 +R89 +R28 +L33 +L67 +L990 +R64 +L94 +L96 +R994 +L78 +R11 +R289 +R56 +R644 +L70 +R42 +R128 +L3 +L242 +R145 +L14 +R14 +L5 +L86 +R866 +R25 +L22 +R22 +R62 +R82 +L33 +L11 +L78 +L822 +L15 +R55 +R589 +L94 +L58 +R59 +L39 +L46 +R571 +R378 +R15 +L22 +L35 +L58 +R839 +L13 +L63 +R146 +R591 +L33 +R92 +L59 +L19 +L893 +R85 +R57 +L11 +R98 +L19 +R2 +R24 +R970 +L52 +L41 +L601 +R49 +R72 +L739 +L937 +L367 +R22 +R82 +L387 +L73 +L22 +R94 +R17 +L59 +R48 +R65 +R51 +R42 +R66 +R72 +L429 +L63 +R896 +L7 +L1 +L79 +L13 +R889 +L45 +L88 +R944 +R188 +R12 +R85 +L88 +L97 +R838 +L38 +L46 +L54 +L45 +R45 +R103 +L44 +R99 +L58 +R57 +L57 +L40 +R63 +R8 +R69 +L383 +R68 +R20 +R69 +R13 +R13 +R93 +R108 +L79 +L69 +R13 +R27 +R50 +L34 +L9 +R50 +L68 +R9 +R9 +L75 +R75 +L66 +L34 +L37 +L63 +L28 +L21 +L2 +R27 +R7 +R5 +R450 +L520 +L61 +L57 +L31 +R31 +R24 +L45 +R44 +R586 +R50 +L259 +R36 +R770 +L110 +R58 +L39 +R185 +L120 +L20 +R40 +R98 +L390 +R47 +R62 +R83 +R4 +R27 +R508 +R46 +L17 +L68 +L590 +L10 +R781 +R19 +R41 +L41 +L816 +L84 +L3 +R93 +L5 +R15 +R2 +L102 +L59 +L18 +L23 +L395 +R95 +R43 +L20 +R36 +R21 +R92 +L60 +R88 +R30 +R70 +R61 +L619 +L607 +R65 +L63 +R53 +R10 +R79 +R21 +R31 +R17 +L750 +R97 +L22 +R76 +R50 +L2 +R98 +L95 +R75 +R25 +R47 +R7 +R92 +R95 +L41 +R806 +L57 +R23 +L36 +L461 +R922 +L389 +L32 +L84 +L66 +R50 +R71 +L49 +R318 +R63 +R21 +R86 +R262 +R98 +R79 +R16 +L19 +R76 +L11 +L87 +R283 +R45 +L19 +R54 +L63 +L55 +R14 +L34 +L25 +R60 +L947 +R87 +L26 +R92 +R92 +L721 +L37 +R118 +L18 +L41 +R95 +L54 +R10 +L10 +L39 +R49 +R36 +R98 +L1 +L27 +R23 +L76 +L43 +L56 +L7 +R11 +L3 +R35 +L32 +L34 +R44 +L8 +R31 +R19 +L19 +R88 +R705 +L94 +L72 +L44 +L54 +L30 +R70 +L66 +R47 +R536 +L516 +R29 +L682 +R44 +L6 +R22 +R4 +L982 +L381 +R57 +L39 +L637 +R63 +R20 +R17 +L25 +R28 +L801 +R640 +L404 +L47 +R91 +R18 +L935 +L65 +L63 +L37 +R1 +L1 +L23 +L48 +L529 +R55 +L715 +L20 +R29 +L49 +L84 +L65 +L18 +R67 +R811 +R92 +L3 +L59 +R32 +R41 +R86 +R23 +R58 +L11 +R30 +R66 +R505 +R15 +L86 +R15 +L88 +L33 +L527 +R75 +L11 +L75 +R44 +L404 +R8 +L80 +L39 +R65 +L309 +L41 +R999 +L99 +R40 +L44 +L796 +R61 +R11 +L33 +R61 +R70 +R30 +L55 +R19 +R74 +R5 +L82 +R39 +R23 +L88 +R56 +R78 +R8 +R21 +R8 +L6 +R396 +R604 +L87 +L46 +R733 +L10 +R86 +R67 +L643 +R29 +R71 +R20 +R749 +L69 +R33 +L885 +R52 +L42 +R42 +R96 +L96 +R13 +L157 +L39 +R297 +R86 +R911 +R592 +R523 +L45 +L81 +L810 +R12 +R98 +R79 +L79 +R95 +L595 +L17 +L151 +L663 +L769 +L16 +L84 +L71 +R71 +L14 +L778 +R40 +R86 +L95 +L39 +R27 +L35 +L76 +R84 +R28 +R23 +R110 +R20 +L697 +R98 +L82 +L485 +R88 +R92 +R992 +L105 +L37 +L45 +R180 +R52 +R176 +L52 +L799 +L92 +L16 +R550 +L896 +L35 +R72 +L397 +R57 +L31 +R20 +L89 +R750 +R74 +L14 +L49 +R964 +R575 +L28 +R788 +L35 +R75 +R88 +L89 +L45 +R924 +R3 +R19 +L24 +R99 +L75 +R84 +R58 +R58 +R366 +R34 +R28 +L61 +R33 +R820 +L895 +L79 +L78 +R6 +R17 +L591 +R67 +L46 +R326 +R53 +L13 +L59 +L678 +R50 +L97 +L3 +R12 +R88 +L39 +L44 +R83 +R20 +L21 +R428 +L27 +R42 +R58 +R44 +R15 +R66 +R589 +R60 +L74 +L92 +L31 +L77 +L83 +L605 +L12 +L42 +R842 +R49 +L64 +L14 +R95 +R60 +R74 +R73 +R90 +L326 +R83 +L20 +L48 +L216 +R15 +L51 +L70 +L15 +L72 +R657 +R10 +L902 +L43 +L711 +L580 +L25 +R21 +R908 +R22 +R550 +R150 +R46 +L463 +R37 +R92 +L25 +R19 +R48 +L20 +L34 +R78 +R422 +R739 +R36 +L805 +L70 +L410 +R83 +R1 +R62 +L3 +L33 +L3 +L64 +L62 +R96 +L167 +L42 +L74 +L29 +L68 +R77 +L64 +R65 +L18 +R52 +L115 +R23 +L62 +L221 +L86 +L21 +L17 +L57 +L42 +R607 +L108 +L36 +L38 +R61 +R64 +L51 +L26 +R26 +L44 +R20 +R555 +R69 +L12 +L76 +L31 +L5 +R94 +R579 +R28 +L301 +L1 +L75 +L37 +R41 +L4 +L64 +R573 +L720 +L29 +R40 +R26 +L26 +R67 +R57 +R34 +R51 +L9 +L324 +L71 +L5 +L62 +R15 +L74 +L4 +L75 +L33 +R97 +L64 +R226 +R74 +R78 +R40 +R182 +L31 +R31 +R6 +L43 +R89 +L59 +R60 +R47 +L66 +R766 +L98 +L360 +R58 +R18 +R73 +L70 +R663 +L18 +L66 +R248 +R39 +L8 +L48 +R69 +R7 +R93 +L2 +R7 +L95 +R90 +L4 +R4 +R39 +R34 +R14 +R20 +L292 +R85 +L91 +L42 +L943 +L24 +R87 +L87 +L74 +R25 +R74 +R72 +R17 +R86 +R92 +L592 +R45 +R315 +R40 +R82 +L54 +L74 +L54 +R30 +R81 +R68 +L11 +R75 +R57 +L778 +R71 +L6 +L25 +L71 +R442 +R967 +R63 +L63 +R82 +R418 +L25 +L548 +L27 +R48 +L31 +L63 +R34 +R62 +R90 +R60 +L44 +L75 +L62 +L19 +R84 +L84 +R5 +L98 +R29 +R33 +L131 +R62 +R24 +L924 +R85 +L23 +L62 +R12 +R14 +L38 +L65 +R77 +L19 +L67 +R86 +L1 +R16 +R85 +L63 +R76 +L613 +R43 +L14 +R71 +R30 +R36 +R73 +L27 +R66 +L178 +R917 +L69 +R52 +R663 +R59 +R78 +R81 +L328 +L61 +L92 +R34 +L84 +R750 +R644 +R37 +L68 +R94 +R80 +R75 +L323 +L88 +L6 +R55 +L65 +R65 +R717 +R2 +R52 +L37 +L5 +R67 +L484 +R88 +L63 +L82 +R194 +R76 +L21 +R49 +R844 +L74 +L40 +L75 +R59 +R194 +R91 +R48 +R29 +L32 +L38 +R141 +L59 +L378 +L63 +L19 +L421 +L20 +L86 +R46 +L15 +R15 +R72 +R28 +L35 +R8 +R21 +L17 +L73 +L43 +R90 +R84 +L15 +R12 +L56 +L58 +R14 +R68 +R84 +L249 +L135 +L10 +R61 +R33 +L85 +L799 +L45 +R62 +L17 +R39 +R151 +R28 +L886 +L32 +R50 +L48 +L302 +L17 +L79 +L4 +R49 +L49 +L64 +L36 +R78 +L672 +R48 +R353 +L26 +L324 +L31 +R274 +L12 +L10 +R22 +R64 +R475 +L23 +L39 +L777 +L33 +L67 +L75 +L25 +L60 +R60 +L57 +R69 +L12 +L427 +R26 +R89 +R12 +R12 +R77 +L89 +L42 +R726 +R2 +R40 +L567 +R19 +R22 +R70 +R30 +L331 +L55 +R86 +L48 +L52 +L25 +R25 +R73 +L24 +R618 +R26 +L993 +L88 +L12 +L77 +R97 +R444 +R36 +R99 +R73 +L34 +R28 +R67 +R67 +R71 +L14 +L134 +L48 +L56 +L28 +L68 +R73 +L96 +L73 +R31 +L127 +L14 +R29 +R2 +R84 +R42 +R60 +L34 +L692 +L10 +R67 +L65 +L16 +L84 +L81 +R81 +R445 +L354 +L91 +R25 +R4 +L29 +R84 +L65 +R358 +R42 +L78 +R59 +R37 +R563 +R18 +L18 +L33 +R27 +L49 +R828 +R227 +R40 +R23 +L21 +R58 +R927 +R73 +L94 +R4 +R68 +R578 +R657 +R855 +R32 +R84 +L61 +L86 +L53 +L66 +L18 +L523 +R23 +R91 +L54 +L40 +R39 +L37 +R19 +L16 +R875 +L77 +R37 +R57 +R292 +L1 +R87 +L98 +L26 +L90 +L1 +R43 +L68 +R75 +R93 +L47 +L78 +R25 +L67 +L41 +R28 +R620 +L47 +L993 +L22 +L5 +R27 +R21 +L21 +R82 +R18 +L78 +R45 +R42 +R73 +R18 +R7 +R16 +L23 +R92 +R8 +R299 +R83 +L82 +L39 +R67 +R72 +R90 +R16 +L420 +L7 +R11 +R692 +L84 +R31 +L12 +R55 +L37 +R61 +L55 +R51 +R808 +L628 +L72 +R28 +R72 +L7 +L309 +R16 +R41 +R765 +L85 +R64 +R15 +R34 +R766 +L97 +R97 +L31 +R629 +L98 +L14 +R14 +R94 +R3 +R33 +R70 +L75 +R75 +R311 +L811 +L184 +R80 +L48 +L35 +R20 +L33 +R43 +R1 +R91 +R88 +R62 +L84 +R199 +R3 +R2 +L56 +R18 +R40 +L30 +L77 +R40 +L40 +L603 +L20 +L77 +R30 +R28 +L56 +R66 +R45 +R87 +R18 +L918 +L54 +R154 +L15 +R15 +R27 +L9 +L42 +L56 +L99 +R879 +L2 +L98 +L70 +L89 +L75 +L66 +L32 +R125 +R46 +L35 +L316 +L17 +L71 +L31 +L169 +L33 +R50 +L48 +L16 +R47 +R95 +R33 +R35 +R885 +R72 +R80 +R35 +R96 +R969 +R91 +L3 +R12 +L16 +L84 +R43 +L19 +L83 +L41 +R65 +R76 +R66 +L70 +L89 +L48 +L53 +L47 +L46 +L76 +L178 +L33 +R25 +R98 +L82 +R37 +R55 +R21 +L21 +L97 +L47 +R57 +R94 +L62 +R90 +L35 +R8 +L22 +L86 +R457 +R143 +R44 +L13 +R44 +L42 +L91 +L42 +R7 +L790 +R762 +L94 +R89 +L76 +R595 +R852 +R11 +L835 +R499 +R46 +L66 +R404 +R98 +L2 +R37 +L1 +R19 +R866 +L5 +L78 +R62 +R148 +L61 +L62 +L46 +R50 +L729 +L980 +R906 +L74 +L67 +L347 +L38 +L619 +L61 +R992 +L12 +R26 +L890 +L64 +L72 +L28 +R1 +L45 +L383 +L84 +L43 +L73 +L45 +R33 +R67 +R31 +L31 +L54 +R54 +L52 +R987 +L575 +L74 +R414 +R298 +R78 +L76 +L174 +R82 +L77 +R69 +R41 +L16 +L21 +L4 +L9 +R9 +R48 +R852 +L94 +R2 +R292 +L84 +R84 +L41 +L59 +R33 +R85 +R82 +R151 +R39 +R55 +R661 +L54 +R48 +L20 +R5 +L74 +L11 +L95 +L68 +R20 +L79 +L46 +L27 +L405 +L544 +L87 +L96 +R175 +L548 +R20 +L84 +R5 +L41 +R41 +R84 +L17 +R92 +L918 +L782 +R34 +R66 +R85 +L99 +L77 +L70 +L8 +L46 +L93 +L16 +R95 +L714 +R27 +R19 +L3 +R832 +R58 +R63 +R96 +L92 +L83 +R33 +R9 +R84 +L21 +L29 +L13 +L56 +L69 +R88 +L62 +R47 +R15 +L57 +R25 +L68 +R81 +R319 +L44 +R57 +L97 +L78 +R77 +L569 +R54 +R85 +L39 +L62 +R34 +L518 +R359 +R41 +L87 +R99 +L12 +R4 +R296 +R62 +L86 +L862 +L47 +R33 +R653 +R689 +R64 +R3 +R222 +R433 +L997 +R4 +R73 +L44 +L130 +R30 +L65 +L35 +L99 +R99 +R825 +R63 +R35 +R77 +R392 +R14 +L66 +L22 +L18 +L22 +R22 +R31 +L1 +R70 +R497 +L72 +L747 +R48 +L21 +R82 +L72 +R85 +R81 +L37 +L45 +L797 +R79 +L81 +L75 +L66 +L78 +R73 +R112 +R234 +R63 +R65 +L35 +L675 +R82 +R30 +L30 +R70 +L770 +R51 +R19 +L8 +L96 +L247 +R48 +R32 +L99 +L37 +L13 +R99 +L49 +L76 +L21 +R97 +L86 +R62 +L19 +L26 +R814 +L647 +R4 +R98 +R81 +L46 +R65 +L36 +L27 +L637 +R32 +R68 +L45 +L55 +L93 +R93 +L3 +L97 +L309 +R896 +R13 +R53 +L53 +R7 +L7 +L71 +R71 +L11 +L689 +R42 +R58 +L53 +R87 +R66 +R645 +L67 +R91 +R90 +R41 +L42 +R93 +R54 +L793 +L12 +R20 +R80 +L5 +R5 +L61 +L5 +L34 +R23 +R2 +L25 +R33 +L7 +R45 +R43 +L39 +R15 +R60 +L58 +L57 +R65 +L75 +L25 +R85 +R60 +L45 +L752 +R62 +R31 +R405 +R85 +R89 +R39 +L12 +L47 +R847 +R11 +L58 +R19 +R81 +L93 +L7 +R15 +R585 +L43 +R43 +R84 +R85 +R42 +R29 +R60 +L74 +R93 +R60 +L79 +L9 +L26 +L65 +R39 +L39 +L33 +L67 +L32 +R139 +L6 +L1 +R213 +L7 +L6 +L66 +R66 +R41 +R47 +L78 +R40 +L79 +R77 +L113 +L1 +R46 +R48 +L88 +R7 +L42 +L5 +R96 +L12 +R17 +L185 +R11 +L27 +R94 +R31 +L81 +L5 +R110 +L64 +R66 +R872 +L77 +R78 +L724 +R74 +L23 +L3 +L48 +L93 +R51 +L210 +R52 +L18 +R66 +L45 +L159 +L66 +R42 +R80 +L62 +L38 +R65 +R29 +L81 +R96 +R72 +L34 +R70 +L17 +R66 +L66 +L96 +L452 +L752 +L28 +L60 +R53 +L5 +L60 +L630 +L70 +R52 +L52 +R91 +R187 +R22 +L41 +L59 +L97 +R97 +L62 +R11 +L45 +R631 +R9 +L544 +L72 +R36 +R36 +R17 +R25 +R23 +R35 +R26 +R68 +R6 +L1 +R21 +L96 +L24 +L56 +L21 +R90 +R87 +R61 +L30 +R94 +L2 +R468 +R392 +R137 +R16 +R64 +L652 +L25 +L31 +R39 +L31 +R83 +L83 +R37 +R163 +L46 +L40 +R86 +R751 +R49 +R639 +L14 +R78 +R70 +L138 +R19 +R646 +R87 +R60 +L706 +L67 +R80 +R44 +R78 +R95 +L150 +L21 +L61 +R61 +L77 +L64 +L44 +L235 +R20 +R51 +R25 +L51 +R30 +R45 +L97 +R16 +R54 +L70 +R91 +L4 +R10 +R98 +L98 +L54 +R41 +R13 +L75 +R58 +L31 +R48 +R77 +R23 +L722 +R122 +L69 +R93 +L72 +L95 +R4 +L17 +R56 +R16 +R12 +R80 +L23 +R45 +R669 +R1 +R833 +L767 +L18 +R36 +R81 +R97 +L28 +R38 +R3 +L49 +R37 +R72 +R65 +L38 +L33 +L97 +L68 +L75 +R77 +R920 +L32 +L618 +L36 +L890 +L81 +L29 +R14 +L8 +R713 +R81 +R12 +L16 +L96 +L27 +R4 +R23 +R456 +L56 +R24 +R989 +L62 +L51 +L4 +L51 +L45 +L35 +L65 +R97 +R430 +R704 +R60 +R298 +R11 +R45 +L45 +L78 +R78 +R64 +L249 +R47 +L811 +L57 +R17 +R30 +R659 +L738 +L88 +R21 +R13 +R92 +R94 +R806 +R56 +R80 +L36 +R77 +L1 +R24 +L29 +R4 +R25 +R77 +R9 +L81 +L68 +L37 +R16 +R734 +L48 +R698 +R402 +R88 +R10 +R27 +R73 +L169 +L78 +L53 +R223 +R605 +R72 +R17 +R34 +L98 +R85 +L4 +L35 +L75 +R338 +R38 +L204 +R4 +R77 +R23 +R88 +L88 +L22 +R22 +L52 +R40 +L16 +R95 +R65 +L70 +L40 +R31 +R778 +R19 +R28 +L232 +L946 +R45 +R81 +R31 +R43 +R40 +R60 +L52 +L14 +L34 +R58 +L58 +R71 +R75 +R668 +R17 +R821 +L10 +R58 +L34 +R34 +R44 +R88 +R284 +R84 +L68 +L46 +R98 +L60 +L24 +R7 +L94 +R49 +L71 +L220 +L31 +R19 +R37 +R4 +R40 +R91 +L831 +R79 +L675 +L4 +L53 +L20 +R863 +L75 +R85 +L45 +L536 +R13 +R13 +R55 +L19 +R2 +L995 +R512 +R68 +L63 +L5 +R60 +R40 +L94 +L93 +R13 +L26 +R54 +L58 +R87 +L72 +L11 +L82 +R60 +L2 +R39 +L15 +L33 +R33 +R94 +L394 +L750 +R70 +L20 +R43 +R57 +L70 +R570 +R7 +L84 +R42 +L65 +R10 +L959 +R49 +R11 +L97 +L91 +R77 +L46 +R66 +R39 +R41 +L581 +L69 +R77 +L22 +L5 +L308 +L92 +R383 +L23 +L60 +L12 +R57 +L47 +R76 +L19 +R17 +R20 +L92 +L222 +R741 +R81 +L47 +R47 +L9 +R603 +R702 +L385 +L89 +R54 +L99 +R97 +L674 +R84 +L84 +L760 +R696 +L487 +R36 +R480 +L65 +R93 +R24 +L17 +R49 +L90 +R7 +R78 +L96 +L48 +R7 +R32 +R261 +L24 +R82 +L53 +R95 +L988 +L45 +L24 +R69 +L35 +R789 +R49 +R85 +L57 +L61 +R18 +R17 +L80 +R38 +R71 +L95 +L8 +L43 +R79 +L59 +L20 +R267 +R95 +R34 +L14 +L82 +R4 +R389 +R933 +L26 +R49 +L542 +R132 +L439 +L92 +L59 +L80 +R18 +R981 +R32 +L16 +R64 +L41 +L7 +L80 +L187 +L94 +L978 +L61 +R37 +L871 +R34 +L8 +R913 +L70 +L42 +L44 +L49 +R31 +L31 +R44 +R85 +R71 +R20 +R6 +R72 +L74 +R86 +L622 +L88 +R6 +R394 +R57 +R78 +L35 +L94 +R40 +L88 +L58 +R28 +L628 +R52 +R48 +R98 +R62 +R240 +R73 +R27 +R12 +L812 +R34 +R83 +R93 +R90 +L23 +R57 +L42 +R40 +L32 +R28 +R72 +L26 +R26 +R52 +L8 +R18 +R38 +R336 +R64 +R44 +L334 +L7 +R97 +R685 +R15 +R15 +R73 +R47 +L25 +R80 +L90 +R27 +L27 +R93 +L84 +R791 +L16 +L54 +L54 +L22 +L40 +L14 +L60 +L40 +L60 +R579 +R7 +R74 +L10 +L90 +L30 +R30 +L45 +R12 +L4 +L63 +R12 +L12 +L120 +R20 +L79 +L19 +L69 +L53 +L680 +R67 +R72 +L84 +L19 +L64 +R28 +L41 +R341 +R82 +L85 +R29 +R74 +L604 +L96 +R30 +R70 +R58 +L68 +L694 +R4 +R97 +L13 +R16 +L13 +L69 +L318 +L99 +R899 +R6 +L72 +L81 +L53 +L728 +R770 +L242 +R53 +R47 +R36 +L36 +L74 +R74 +L47 +R47 +L75 +R75 +L73 +R859 +R21 +L67 +R40 +L80 +L53 +R81 +R6 +R44 +R96 +R26 +R17 +L3 +R72 +R41 +R73 +R511 +L11 +L74 +R2 +L24 +R36 +R5 +L946 +L18 +L54 +L161 +R234 +R990 +L795 +R54 +L37 +R88 +L9 +L81 +L10 +L924 +L74 +L2 +R78 +L78 +L57 +R49 +R87 +L42 +L437 +L74 +R53 +L79 +L68 +L675 +R44 +L518 +R77 +L8 +L755 +R65 +L262 +R188 +L67 +R79 +L36 +L535 +R85 +L840 +R16 +L10 +L69 +L59 +R41 +L96 +L50 +R22 +R32 +L1 +L92 +R965 +L176 +L70 +L27 +L42 +L43 +R85 +L359 +R53 +R919 +R77 +L32 +L18 +L40 +L440 +L60 +L32 +L64 +L73 +R25 +L51 +R95 +R267 +R80 +R53 +R860 +R40 +L52 +R23 +R29 +L31 +L69 +L25 +L25 +R2 +L544 +L54 +L12 +R498 +R60 +L998 +R98 +L75 +R73 +L85 +L618 +R56 +L2 +L93 +L11 +L77 +R11 +R7 +R714 +R786 +R361 +R30 +R23 +R787 +R213 +R903 +L62 +R39 +L47 +R59 +L48 +L48 +R23 +L18 +R14 +R4 +R26 +L245 +R743 +L43 +L378 +L48 +R40 +R86 +L45 +L338 +R24 +R74 +R85 +R35 +R62 +L42 +L95 +R12 +R13 +L12 +L873 +R73 +R760 +L25 +R92 +R9 +R91 +R67 +R33 +L43 +R74 +L87 +R23 +L67 +L19 +R35 +R84 +R93 +L51 +R65 +R78 +R93 +R59 +R52 +R38 +R36 +L2 +R448 +R98 +L83 +R76 +L82 +L718 +L1 +L83 +R36 +R419 +R485 +L1 +R60 +R49 +R136 +L2 +R70 +L12 +L93 +L86 +R75 +L619 +L633 +R81 +L81 +L21 +R95 +R26 +R50 +R89 +R61 +L32 +R50 +R82 +L84 +R23 +R24 +L63 +R39 +R61 +L14 +R64 +R65 +L18 +L43 +L54 +L93 +L2 +L5 +L63 +L21 +R84 +R16 +R67 +L83 +L65 +R43 +R22 +L48 +R48 +R64 +L64 +L37 +R61 +L75 +L49 +L97 +L57 +L46 +L79 +L21 +L99 +R88 +R11 +L92 +L8 +L12 +R20 +L18 +L85 +R49 +L5 +L30 +L10 +R29 +R27 +R9 +R5 +R5 +L17 +R19 +R34 +L4 +L29 +L46 +L39 +R5 +R49 +L50 +R48 +L1 +R3 +L47 +R9 +L47 +L27 +L45 +R36 +R18 +L20 +R17 +L5 +L46 +L8 +L23 +R9 +L10 +R19 +R42 +L15 +L39 +L25 +L14 +R43 +R39 +L43 +R15 +L12 +L48 +L36 \ No newline at end of file diff --git a/src/advent-of-code/2025/day1/main.spec.ts b/src/advent-of-code/2025/day1/main.spec.ts new file mode 100644 index 0000000..5d6f950 --- /dev/null +++ b/src/advent-of-code/2025/day1/main.spec.ts @@ -0,0 +1,44 @@ +/** + * @copyright NHCarrigan + * @license Naomi's Public License + * @author Naomi Carrigan + */ + +import { readFile } from "node:fs/promises"; +import { join } from "node:path"; +import { describe, it, expect } from "vitest"; +import { partOne, partTwo } from "./main.js"; + +const inputOne = `L68 +L30 +R48 +L5 +R60 +L55 +L1 +L99 +R14 +L82 +R0`; + +describe("partOne", () => { + it("should return the correct result", async() => { + expect(partOne(inputOne)).toBe(3); + const bigInput = await readFile( + join(import.meta.dirname, "inputOne.txt"), + "utf8", + ); + expect(partOne(bigInput)).toBe(1086); + }); +}); + +describe("partTwo", () => { + it("should return the correct result", async() => { + expect(partTwo(inputOne)).toBe(6); + const bigInput = await readFile( + join(import.meta.dirname, "inputOne.txt"), + "utf8", + ); + expect(partTwo(bigInput)).toBe(6268); + }); +}); diff --git a/src/advent-of-code/2025/day1/main.ts b/src/advent-of-code/2025/day1/main.ts new file mode 100644 index 0000000..d374ec8 --- /dev/null +++ b/src/advent-of-code/2025/day1/main.ts @@ -0,0 +1,72 @@ +/** + * @copyright NHCarrigan + * @license Naomi's Public License + * @author Naomi Carrigan + */ + +const normalizePosition = (value: number): number => { + const modulus = value % 100; + return (modulus + 100) % 100; +}; +const countZeroHits = (start: number, end: number): number => { + if (end === start) { + return 0; + } + if (end > start) { + return Math.floor(end / 100) - Math.floor(start / 100); + } + return Math.floor((start - 1) / 100) - Math.floor((end - 1) / 100); +}; + +/** + * Part one of the Advent of Code 2025 day 1 challenge. + * @param input - The input string. + * @returns The number of times the position is 0. + * @see https://adventofcode.com/2025/day/1 + */ +const partOne = (input: string): number => { + const instructions = input.split("\n").map((line) => { + return [ line[0], line.slice(1) ]; + }); + let position = 50; + let count = 0; + for (const instruction of instructions) { + const [ direction, distance ] = instruction; + if (direction === "L") { + position = position - Number(distance); + } else { + position = position + Number(distance); + } + position = normalizePosition(position); + if (position === 0) { + count = count + 1; + } + } + return count; +}; + +/** + * Part two of the Advent of Code 2025 day 1 challenge. + * @param input - The input string. + * @returns The number of times the position passed through 0. + * @see https://adventofcode.com/2025/day/1 + */ +const partTwo = (input: string): number => { + const instructions = input.split("\n").map((line) => { + return [ line[0], line.slice(1) ]; + }); + let position = 50; + let count = 0; + for (const instruction of instructions) { + const [ direction, distance ] = instruction; + const delta = direction === "L" + ? -Number(distance) + : Number(distance); + const endPosition = position + delta; + count = count + countZeroHits(position, endPosition); + position = normalizePosition(endPosition); + } + return count; +}; + +export { partOne, partTwo };