From 900ffc679fede8f3a18a3c2a71c950dd4ec8a2e7 Mon Sep 17 00:00:00 2001 From: Daniel Heras Quesada Date: Mon, 1 Dec 2025 09:25:12 +0100 Subject: [PATCH] feat(day_1): both exercises done --- README.md | 8 +- src/exercises/assets/day_1_input.txt | 4763 +++++++++++++++++++++++++- src/exercises/day_1.ts | 110 +- src/main.ts | 28 +- 4 files changed, 4887 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 3f805fc..527eb8a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Code Advent problems of 2025. -| Day | Name | Part 1 | Part 2 | -| :-: | :--- | :----: | :----: | -| 1 | | | | -| 2 | | | | +| Day | Name | Part 1 | Part 2 | +| :-: | :-------------- | :----: | :----: | +| 1 | Secret Entrance | ⭐ | ⭐ | +| 2 | | | | diff --git a/src/exercises/assets/day_1_input.txt b/src/exercises/assets/day_1_input.txt index 345e6ae..9758c99 100644 --- a/src/exercises/assets/day_1_input.txt +++ b/src/exercises/assets/day_1_input.txt @@ -1 +1,4762 @@ -Test +R22 +R26 +L20 +R20 +R9 +L50 +R33 +R39 +L41 +R24 +R21 +R37 +L31 +R3 +R36 +L19 +R27 +L32 +L13 +L48 +R8 +L13 +R5 +R29 +R14 +R29 +R25 +R12 +L7 +L42 +L27 +R49 +R21 +L26 +L17 +L49 +L49 +L46 +L38 +R42 +L49 +R15 +L29 +R32 +R34 +L10 +R26 +L2 +R25 +R60 +R44 +R56 +R85 +L87 +L64 +R51 +R97 +R41 +L17 +L79 +L74 +R91 +R68 +L27 +R58 +R12 +R16 +L44 +L69 +R27 +R60 +R33 +R55 +L3 +L45 +L32 +R65 +L33 +L50 +L50 +L83 +L64 +R43 +R88 +R16 +R97 +L97 +L64 +R71 +R67 +R45 +L19 +R71 +L42 +R71 +L8 +R8 +L61 +R91 +L7 +R45 +R65 +R67 +R2 +L2 +L46 +R81 +L35 +L847 +L653 +R412 +R95 +L59 +L63 +L385 +R526 +R74 +R787 +R702 +L91 +L67 +R95 +R22 +R27 +R804 +L79 +R22 +L522 +R109 +R47 +R87 +R57 +L11 +L89 +R50 +L82 +R755 +R88 +R89 +R803 +L3 +L76 +L24 +R27 +L51 +R6 +R59 +R459 +L529 +L22 +R48 +R3 +L83 +R83 +R25 +R1 +R167 +L63 +R70 +L99 +L91 +L51 +L859 +R398 +L98 +R983 +R17 +L35 +L30 +L35 +R31 +R89 +L20 +L44 +R720 +L76 +R48 +R50 +L30 +R54 +L76 +L48 +L18 +R23 +R84 +R189 +R24 +L530 +R430 +L8 +R8 +L4 +R34 +L425 +R95 +L50 +L50 +L894 +L98 +L69 +L25 +L34 +R4 +R37 +L72 +L63 +L63 +L823 +L46 +R4 +R855 +L13 +L64 +L36 +L72 +L928 +L97 +R278 +R64 +R94 +R61 +R27 +R73 +L43 +L57 +R84 +R181 +L31 +R66 +R25 +R75 +R599 +R1 +R802 +R79 +L75 +L67 +R61 +L97 +L48 +R3 +L437 +R79 +R51 +R846 +R75 +R1 +R27 +L55 +L70 +R42 +L6 +R89 +L92 +R65 +R45 +L18 +L95 +L305 +R98 +R2 +R98 +R2 +R30 +L327 +L77 +L654 +L99 +L26 +R291 +L9 +L229 +L24 +R32 +L34 +L74 +R26 +R11 +R28 +L65 +R34 +R571 +L44 +L36 +R22 +L36 +R43 +R53 +R872 +R221 +R85 +R15 +L18 +L386 +R204 +R32 +R56 +L28 +L460 +R21 +L61 +R72 +R68 +R30 +R70 +R20 +L874 +R39 +L69 +L16 +L5 +L90 +R695 +R56 +L56 +R55 +R98 +R59 +R18 +R70 +R698 +R78 +L46 +R737 +L52 +R223 +R419 +L17 +R860 +R718 +L18 +L77 +L23 +R476 +R88 +L75 +L40 +L784 +R73 +L11 +L86 +R39 +R43 +L323 +R60 +L47 +L353 +L84 +R24 +R7 +R52 +L51 +R92 +L37 +R46 +L37 +R28 +L75 +L47 +L778 +L60 +L40 +R36 +L736 +R10 +L20 +R17 +R3 +L23 +R13 +L712 +L44 +L144 +L39 +R81 +R30 +L72 +R23 +R77 +L89 +R624 +R65 +L80 +L20 +L59 +L74 +R76 +L9 +R66 +R20 +L476 +R73 +L17 +L421 +L79 +L73 +L49 +L78 +R4 +R19 +L23 +R90 +L90 +L584 +R35 +R110 +R61 +R57 +L79 +L8 +L774 +R778 +R58 +R184 +R51 +L88 +R76 +L77 +R9 +L709 +L896 +R754 +L39 +L19 +L115 +L325 +R770 +R73 +R97 +L62 +R95 +R86 +R92 +R189 +L74 +R97 +L823 +R8 +R98 +L26 +R20 +L45 +L55 +R48 +L48 +R982 +L82 +L891 +L374 +L35 +L80 +L20 +L3 +R69 +R34 +R14 +L23 +L41 +L1 +L24 +L25 +R85 +L28 +L69 +L51 +R28 +L74 +L574 +R72 +L75 +R86 +R55 +R53 +R92 +R571 +R5 +L76 +L38 +L71 +R9 +R171 +R29 +R61 +L57 +L304 +L91 +L9 +L37 +R37 +R22 +R69 +L391 +R73 +L22 +R27 +L78 +R569 +R227 +L24 +R850 +R78 +R634 +L47 +R769 +R55 +L11 +R75 +R95 +L870 +R239 +L39 +R66 +R34 +L871 +R71 +L253 +L38 +R30 +R34 +R27 +R76 +R95 +R29 +L92 +R945 +R50 +R9 +L19 +L2 +L87 +R52 +L56 +R93 +L93 +R56 +L56 +L29 +R829 +L81 +L66 +R82 +L35 +R66 +L66 +R31 +L12 +L15 +R122 +R175 +R964 +L65 +L27 +R97 +R31 +L76 +R75 +L44 +L56 +R16 +L16 +R69 +L69 +L46 +R46 +L89 +R89 +L77 +L23 +R25 +L93 +R68 +L65 +R60 +L55 +R46 +L14 +L225 +R53 +L5 +L95 +L45 +R51 +L6 +R21 +R16 +R927 +R36 +R315 +R85 +L14 +R14 +R533 +L27 +R718 +L954 +R86 +R36 +L92 +L14 +R60 +L46 +R78 +R51 +R43 +L972 +L80 +L620 +R10 +L10 +R50 +L349 +L32 +R45 +R86 +R62 +R738 +R90 +R10 +L65 +R65 +R28 +R185 +L78 +R481 +R84 +R621 +R39 +R45 +L683 +R4 +L43 +L35 +L807 +L41 +L44 +R38 +L51 +L63 +R82 +R872 +R66 +R96 +R12 +R78 +L86 +R94 +L94 +R68 +L68 +L73 +L323 +L53 +L84 +R433 +R53 +R47 +L30 +R130 +L93 +R31 +R62 +R76 +R73 +R29 +R70 +R60 +L36 +L72 +R43 +L43 +L512 +R12 +R8 +R30 +R62 +L78 +L39 +R84 +L67 +L34 +L66 +R45 +R55 +L837 +L144 +L19 +R921 +L10 +R989 +R58 +R988 +R9 +R230 +L285 +R852 +R48 +L24 +L76 +R77 +L57 +L20 +L27 +R48 +L89 +L32 +R75 +R525 +R677 +R36 +R43 +R44 +L468 +R78 +L99 +L47 +L84 +L67 +L42 +L51 +L75 +L45 +L84 +R87 +L15 +R12 +R66 +R205 +L71 +R6 +R62 +R50 +L18 +R427 +R87 +R75 +R311 +L36 +L68 +R83 +L525 +R501 +R82 +L92 +L23 +L22 +L32 +L1 +L67 +L923 +L39 +L238 +L87 +R187 +L10 +R17 +R26 +L33 +R5 +L281 +L24 +L40 +L12 +L88 +L60 +L70 +R59 +L47 +R58 +R18 +R49 +L35 +R68 +L33 +R33 +L94 +L6 +L368 +L94 +L95 +L43 +L70 +L61 +L26 +R901 +R85 +L26 +R15 +L207 +L11 +R32 +R10 +R654 +R97 +L93 +L56 +R85 +L698 +R11 +L26 +L95 +L209 +R88 +L59 +L79 +L31 +R15 +L2 +L570 +R70 +R33 +L62 +L14 +L11 +R928 +L51 +R12 +R8 +R79 +R34 +R314 +R86 +L74 +L33 +L93 +L928 +L72 +R278 +R9 +L14 +R59 +L32 +L8 +L48 +R38 +R58 +L25 +L648 +R33 +L11 +L89 +L22 +L78 +R60 +L1 +R31 +L29 +L280 +R11 +L38 +L264 +R92 +L982 +R8 +L41 +L567 +R31 +R69 +L39 +L61 +L44 +R844 +R97 +L38 +R41 +L46 +R746 +L65 +R209 +L39 +R25 +L31 +L99 +R87 +R90 +L26 +R679 +R967 +R95 +R94 +R14 +R64 +R36 +R64 +L672 +R18 +R290 +L43 +L32 +R36 +L79 +R18 +R79 +R974 +L53 +R87 +R27 +R3 +R83 +L50 +L60 +R10 +R85 +R378 +R37 +L66 +R83 +L97 +L20 +R9 +R925 +L87 +R33 +R87 +L67 +L459 +R11 +R91 +R357 +L32 +R32 +L299 +L1 +L850 +R50 +R81 +L43 +L601 +L25 +L58 +L3 +L18 +R60 +L93 +L30 +R36 +L3 +R61 +L17 +R48 +L53 +R14 +R8 +L483 +R23 +R96 +R494 +L17 +R22 +L99 +L61 +R25 +R43 +R93 +L697 +R178 +R27 +R7 +R51 +R84 +L50 +R656 +L18 +L9 +R71 +L88 +L72 +L62 +R401 +L15 +R47 +L74 +L16 +L21 +L87 +L77 +L56 +R20 +L485 +R85 +L772 +L95 +L79 +R746 +L75 +L25 +L962 +R96 +R722 +R75 +L81 +L50 +R144 +L12 +R78 +L394 +R31 +L21 +L26 +L65 +L812 +L23 +L18 +L12 +R30 +L59 +R59 +R48 +R352 +L786 +R49 +L659 +R96 +R71 +R29 +R969 +L334 +L235 +L69 +L31 +L33 +L91 +L76 +R84 +L72 +L5 +R65 +R805 +L19 +R95 +R947 +L77 +R77 +R329 +R75 +L204 +L808 +L18 +L422 +R61 +L61 +R48 +L18 +R18 +R55 +L92 +L63 +R50 +R22 +R406 +L313 +R35 +R21 +L68 +R47 +R65 +L65 +L48 +R90 +R858 +L93 +R58 +R33 +L98 +L2 +L60 +R43 +R12 +L68 +L25 +L6 +R206 +L36 +L24 +R860 +R151 +R49 +L495 +L78 +L27 +R7 +L67 +L25 +L931 +R40 +L42 +R18 +R58 +L58 +L81 +R81 +L402 +R62 +L94 +R34 +L85 +R66 +L81 +R497 +R40 +L153 +L58 +R376 +L28 +L274 +R84 +R66 +R50 +R63 +L17 +R36 +R87 +L94 +L75 +R865 +R35 +L487 +R87 +R91 +L31 +L60 +R773 +L63 +R90 +R34 +L834 +R744 +L77 +R850 +L417 +R16 +R89 +R85 +R6 +L9 +R688 +L496 +R37 +L3 +L39 +R26 +L35 +L14 +L51 +R24 +R76 +R87 +R54 +R59 +L38 +L62 +L96 +L4 +R94 +L820 +L74 +L980 +R7 +L33 +R606 +R39 +R61 +R249 +R81 +L40 +L38 +R48 +R944 +R52 +L96 +R40 +L29 +L67 +L65 +L2 +R723 +L787 +R87 +L135 +L1 +L60 +R496 +R96 +R4 +R72 +R7 +R76 +R145 +L53 +L47 +L41 +R90 +R84 +R67 +R68 +L898 +R30 +L696 +R96 +L23 +R41 +R288 +L82 +L24 +R80 +R88 +L35 +L43 +L25 +L57 +L53 +R87 +L11 +L71 +L60 +L74 +L48 +R22 +L67 +R2 +L35 +R20 +L984 +R38 +L11 +L49 +L965 +R51 +L52 +R749 +R31 +R65 +R7 +L653 +L247 +L54 +R54 +L78 +L73 +R590 +R61 +R83 +R88 +L71 +R97 +R3 +R25 +L91 +L93 +L518 +R743 +R69 +R382 +L88 +L87 +R558 +R44 +R56 +R6 +L99 +L99 +L17 +L491 +L20 +L61 +L2 +L17 +R41 +L813 +R98 +L55 +L71 +L17 +L83 +L83 +L140 +L632 +R855 +R12 +R42 +L38 +L499 +L617 +R951 +R17 +R32 +L32 +R8 +R330 +R73 +R21 +R38 +R36 +L40 +L58 +L176 +R66 +R34 +L729 +L41 +L530 +R17 +L45 +L9 +R44 +L79 +L55 +L8 +L34 +R45 +R52 +L328 +L99 +L78 +L61 +L62 +L98 +L11 +L42 +R40 +R340 +R94 +R36 +R82 +R53 +R66 +R40 +R57 +L57 +R2 +L634 +L372 +R704 +R12 +R21 +R67 +R18 +R75 +R7 +L97 +R97 +L859 +L90 +R74 +R75 +R683 +L29 +L93 +L58 +R37 +R86 +R74 +R96 +L96 +R74 +L474 +R440 +L69 +L71 +R533 +L33 +L11 +L626 +R87 +L54 +L96 +R30 +L81 +R84 +R96 +R20 +L49 +L19 +R364 +L45 +L23 +R45 +L93 +L49 +L92 +R82 +L11 +L68 +L96 +R71 +R29 +R80 +R38 +R87 +L78 +R874 +R13 +R23 +L40 +R8 +L6 +R25 +R632 +R95 +L46 +R45 +L765 +L680 +R91 +R80 +R47 +L52 +R738 +R52 +L56 +R19 +R81 +R12 +L12 +R15 +L7 +L18 +L32 +R42 +R1 +L35 +L98 +L68 +L94 +R32 +L38 +L130 +R30 +L23 +L2 +L75 +L393 +R493 +R699 +L49 +L83 +R54 +R386 +R297 +L4 +R785 +R23 +L15 +R50 +L343 +R347 +R53 +R68 +L91 +L61 +L20 +L30 +R98 +L60 +R96 +L51 +L663 +L30 +R680 +R62 +R302 +R37 +L71 +R45 +R82 +L593 +L47 +R547 +L454 +L913 +R824 +L557 +L82 +L43 +R25 +R42 +R41 +L883 +R26 +L26 +L7 +R7 +R39 +L27 +L769 +R2 +R55 +L39 +R7 +L53 +L9 +R494 +L26 +R21 +L52 +L37 +L55 +L75 +R8 +L52 +R68 +R79 +L84 +R666 +R495 +L56 +R38 +L38 +R97 +R79 +L54 +R178 +R86 +R14 +L26 +R91 +R35 +L23 +L26 +L42 +R9 +R97 +R85 +R16 +L416 +L73 +R33 +L45 +L65 +R69 +L69 +R9 +R59 +L22 +R25 +R60 +R56 +R26 +L896 +L67 +L33 +L51 +R729 +L10 +R133 +R79 +R653 +R96 +L30 +L405 +L661 +L93 +L7 +L88 +L64 +R52 +L83 +L39 +L24 +R16 +R30 +L75 +L86 +R61 +L55 +R55 +R57 +L57 +L25 +R90 +R75 +L28 +R607 +L19 +L17 +R67 +R875 +R47 +R328 +L4 +R495 +L79 +L248 +R63 +L27 +R9 +L59 +R37 +R78 +R7 +R28 +L55 +R55 +L486 +L4 +L44 +R34 +R11 +L20 +L694 +R12 +L9 +R292 +R20 +L835 +R9 +L86 +L8 +L97 +L95 +R6 +L78 +L44 +R42 +L99 +L87 +R39 +L79 +L92 +R67 +L86 +R913 +L21 +L49 +R72 +R40 +L63 +R56 +R63 +R73 +R311 +L34 +L16 +L69 +R34 +L59 +R42 +R43 +R491 +R63 +L556 +R47 +L24 +L75 +L71 +R45 +R270 +L853 +L62 +L29 +R98 +R76 +R955 +L969 +L119 +R623 +L39 +R5 +R730 +R18 +R68 +R883 +L55 +L851 +R6 +R5 +L9 +R4 +L60 +L51 +L89 +R96 +R541 +R63 +L79 +L21 +L25 +R23 +L98 +R15 +R22 +R67 +R17 +L21 +L37 +L49 +L644 +L53 +L82 +R41 +L76 +L65 +L35 +L29 +R29 +R881 +L24 +R56 +R59 +R52 +L21 +L3 +L90 +L10 +L44 +R150 +R94 +R99 +R88 +L57 +R370 +R285 +R15 +L53 +R53 +L168 +L32 +L52 +L48 +L76 +R40 +L79 +L538 +R6 +R47 +L35 +R7 +R949 +L21 +L10 +L22 +R832 +L71 +R16 +R76 +R276 +L25 +L19 +R48 +L95 +R695 +L1 +R16 +L25 +R9 +L54 +L15 +R69 +L74 +R80 +R44 +R22 +L72 +L9 +L767 +R56 +R20 +L81 +R152 +R90 +R39 +R84 +R52 +R64 +R90 +L24 +R84 +L55 +R959 +L974 +L55 +R74 +L48 +L18 +L53 +L80 +R75 +R16 +R19 +R846 +L1 +R184 +L61 +L78 +L95 +L5 +R132 +R86 +R85 +L85 +L89 +L43 +L86 +L64 +L29 +R45 +L27 +L383 +L42 +R36 +L36 +L70 +L64 +L25 +L541 +L53 +L5 +R65 +R493 +R97 +R603 +R41 +L82 +L289 +L84 +R14 +R19 +R29 +L48 +L95 +R45 +R69 +R11 +L3 +L27 +R289 +R19 +R24 +L30 +R86 +R294 +R518 +L16 +L84 +R9 +R76 +R77 +L52 +R90 +L5 +L77 +L94 +R76 +L20 +L57 +R77 +L70 +L15 +L14 +L44 +R43 +R25 +L25 +L1 +L91 +L8 +R35 +R65 +R68 +L20 +L48 +R37 +L86 +R67 +L18 +R16 +R95 +L986 +R75 +R246 +R42 +R512 +L13 +R66 +L49 +R96 +R79 +L79 +R957 +R49 +R23 +R15 +L220 +R23 +R761 +L8 +R62 +R841 +L836 +R78 +R24 +R52 +L21 +R280 +L22 +R45 +R496 +R1 +L82 +R82 +R37 +L41 +L96 +R738 +R27 +L765 +R221 +L799 +R29 +R249 +L87 +R46 +L524 +R24 +L51 +L45 +R267 +L95 +L44 +R9 +L84 +R84 +R79 +L57 +L49 +R27 +L70 +R70 +R43 +L43 +R11 +R55 +L91 +R114 +L23 +R81 +R91 +L38 +R64 +R35 +L99 +L247 +L18 +R30 +R67 +L94 +R62 +R856 +R79 +L36 +L99 +R64 +L89 +R72 +R53 +L824 +R3 +L79 +L19 +L95 +R23 +L70 +R61 +L26 +L82 +L92 +L893 +L9 +R743 +L41 +R389 +R23 +R88 +L355 +L83 +L62 +R69 +R944 +R531 +L170 +L48 +L35 +L56 +L50 +L33 +R32 +L40 +R55 +R642 +R46 +L64 +R47 +L279 +R9 +L53 +L43 +L89 +R94 +L5 +R57 +L61 +R13 +L28 +L85 +L66 +L188 +L31 +R75 +R10 +R93 +R574 +R3 +L21 +L349 +R11 +R61 +R71 +L284 +L59 +L37 +L93 +R397 +L3 +L64 +L27 +L150 +L584 +R61 +R65 +R35 +L43 +R51 +R4 +L61 +L9 +L13 +R63 +R33 +L25 +L310 +R275 +R24 +L50 +R61 +R412 +R15 +L60 +R39 +L97 +R63 +R29 +L86 +L15 +L95 +R90 +R205 +R78 +R79 +R35 +L92 +L94 +L14 +L92 +R374 +L67 +L7 +L366 +R66 +L15 +R4 +R11 +L26 +R26 +L749 +L851 +R21 +R31 +L30 +L70 +R348 +L13 +R67 +R46 +R80 +R80 +R66 +R87 +R96 +L9 +L57 +R543 +R14 +L73 +L27 +R156 +L742 +L801 +R77 +L887 +L903 +R69 +L169 +L45 +R35 +R52 +L185 +R943 +L977 +R91 +R50 +L29 +L25 +L11 +L31 +L68 +R39 +L19 +R658 +R22 +L346 +L89 +R46 +R81 +L98 +L53 +R11 +L96 +L394 +R68 +R566 +R20 +R61 +R23 +L30 +R939 +L31 +R709 +R13 +R390 +L90 +L49 +L51 +R69 +L35 +L84 +L3 +R87 +R66 +L14 +R48 +R945 +L93 +R273 +L44 +R44 +L59 +L44 +R38 +L94 +R62 +R38 +L846 +L96 +L58 +L36 +R98 +R38 +L482 +L38 +R820 +R21 +R95 +R84 +L49 +R62 +L38 +R6 +R85 +R48 +L314 +R57 +R54 +R89 +L82 +R738 +R44 +R831 +R50 +R19 +R546 +R254 +R15 +R85 +R87 +R30 +L53 +L64 +L533 +R872 +R7 +L46 +R71 +L55 +L826 +R610 +L65 +L935 +L78 +L22 +L92 +R16 +L84 +L947 +L473 +R24 +R14 +L63 +R5 +R71 +R84 +L55 +R22 +R49 +R125 +L96 +R78 +L3 +R25 +L19 +L81 +R1 +R99 +R455 +R59 +R45 +L12 +R35 +R18 +R7 +R93 +R2 +L2 +R21 +L68 +L53 +R617 +R83 +R137 +R618 +L55 +R137 +R29 +R34 +R92 +L23 +L92 +L326 +L71 +L380 +R91 +L5 +L986 +L26 +R22 +R4 +R36 +R64 +R92 +L92 +R28 +L28 +L46 +L54 +L137 +L70 +L89 +R96 +R28 +R266 +R6 +L70 +L90 +L740 +R49 +R51 +L79 +R45 +R177 +R57 +R92 +R65 +R96 +R60 +R87 +L670 +L912 +L33 +L15 +R14 +L84 +R178 +L309 +R79 +L48 +R635 +L35 +R30 +L57 +L14 +L52 +R93 +L18 +R94 +R47 +L87 +L608 +L7 +R79 +L46 +R46 +R52 +L839 +R13 +L84 +L60 +L16 +R63 +R7 +L36 +R848 +L48 +R83 +L83 +R62 +R30 +R8 +L15 +L85 +R94 +L4 +R86 +R34 +L10 +L61 +R74 +L12 +L57 +L144 +L62 +L59 +L468 +L47 +R239 +R97 +R457 +R43 +R24 +R32 +R344 +R190 +R908 +R2 +R343 +R97 +R60 +L74 +L55 +R41 +L219 +R207 +R60 +R40 +L513 +R93 +L80 +L32 +L673 +R5 +L43 +R43 +R353 +R47 +R34 +R75 +R50 +R18 +L93 +L43 +R54 +L444 +R92 +R557 +R56 +R95 +L90 +L25 +R87 +L23 +L56 +R55 +R25 +L33 +L91 +R6 +L256 +R467 +R83 +L31 +R31 +R67 +L84 +R25 +L519 +R11 +L11 +R6 +L95 +L12 +L75 +L83 +R70 +R84 +L14 +R130 +L2 +L98 +R51 +R65 +R39 +L3 +L25 +R52 +L79 +R81 +R181 +R13 +R566 +L41 +L50 +R50 +R33 +R64 +R40 +L45 +R60 +L952 +R43 +R599 +R58 +L54 +L46 +L279 +L621 +L15 +R75 +R81 +L41 +L53 +R53 +R99 +L99 +L9 +L97 +L2 +R388 +R20 +R98 +R2 +L58 +R28 +L70 +L80 +L11 +L22 +R13 +L893 +L45 +L4 +R96 +R28 +L82 +R54 +R46 +R77 +R95 +L47 +R75 +L68 +L10 +R978 +R965 +L857 +R51 +L61 +L64 +L70 +L196 +L4 +L32 +L532 +L54 +R595 +R821 +L357 +R71 +L32 +R38 +R18 +L43 +L45 +L12 +R50 +L150 +R64 +L64 +L85 +R85 +R573 +R27 +L42 +L58 +L75 +L16 +R91 +R21 +L26 +L631 +R136 +R149 +R77 +L12 +R86 +R13 +R87 +L59 +L37 +R57 +L355 +L60 +R8 +L98 +L6 +R750 +R67 +R64 +R5 +L12 +L24 +L74 +R74 +L51 +L98 +L11 +L40 +L33 +R70 +L928 +L17 +R5 +L630 +L67 +R30 +L30 +L18 +L45 +R63 +R50 +L250 +R69 +R4 +L52 +L866 +R45 +R25 +R25 +L650 +L25 +L75 +L78 +R98 +R308 +L65 +R29 +L92 +L25 +R25 +R22 +R45 +R633 +L72 +L25 +L3 +L1 +R1 +L86 +L14 +R17 +L517 +R31 +R88 +R69 +L98 +L324 +R67 +L42 +R85 +R84 +R576 +L27 +R891 +R93 +L93 +R342 +L42 +R9 +L95 +R86 +L60 +R960 +R1 +R56 +L57 +R58 +R974 +L49 +L61 +R78 +R86 +R14 +L65 +L35 +L435 +R35 +R395 +R5 +R21 +R79 +R71 +R10 +R34 +R88 +R85 +L539 +L49 +R947 +L23 +R34 +L17 +L41 +L47 +R76 +R14 +L43 +R73 +R27 +L93 +R79 +L81 +R895 +L199 +L186 +L915 +L927 +L18 +R73 +L76 +R18 +R30 +R26 +L65 +L47 +L67 +L447 +L840 +R44 +R96 +R36 +L43 +R920 +L713 +L95 +L5 +L51 +L190 +R54 +R370 +R19 +R590 +L84 +R45 +R78 +L231 +R2 +L27 +R25 +R50 +L48 +L47 +L953 +R14 +R84 +R44 +L44 +R13 +R544 +L55 +L63 +L425 +R86 +R50 +R22 +L45 +L59 +R32 +R75 +L75 +L9 +L122 +R70 +L843 +R404 +R71 +R362 +L58 +L93 +R48 +L98 +L532 +R17 +L17 +R204 +L622 +R466 +L403 +R5 +R51 +L65 +L84 +L52 +L51 +R51 +R115 +R56 +L99 +L72 +R67 +R67 +R23 +L42 +L15 +L14 +L25 +R39 +L79 +R79 +L35 +R35 +L52 +R49 +L98 +L99 +R984 +L79 +R895 +L172 +R69 +R3 +R641 +R88 +L29 +L252 +L337 +L11 +L14 +R16 +R12 +L71 +L38 +R95 +L86 +R64 +L78 +R6 +L78 +L92 +R364 +L90 +L245 +L75 +R17 +L32 +L45 +L76 +R46 +R418 +R187 +R95 +R13 +R8 +L421 +L46 +L214 +L240 +R14 +R86 +L852 +L48 +R94 +R95 +L89 +L66 +R56 +L90 +L86 +R43 +R65 +R42 +L98 +R64 +R42 +R91 +R20 +L107 +R66 +R58 +R866 +R34 +L49 +R60 +L29 +L82 +R85 +R15 +R83 +L83 +R22 +L122 +L47 +R16 +L69 +R727 +R73 +R58 +L960 +L98 +L82 +L88 +L430 +L35 +R35 +R42 +L50 +L152 +L40 +L58 +R27 +R935 +L4 +R52 +R48 +R44 +R21 +L26 +R22 +R39 +L40 +L160 +L84 +L16 +R20 +R345 +L8 +L209 +L18 +R46 +R24 +R24 +L39 +L85 +R10 +R90 +L77 +L24 +L72 +R35 +R38 +L33 +L99 +R34 +L2 +L83 +R83 +R4 +L25 +L79 +R62 +L93 +R31 +L81 +L28 +L7 +R18 +R98 +L80 +R49 +R31 +L99 +R6 +L13 +L94 +L59 +R3 +L301 +L43 +R70 +L70 +R77 +L77 +L559 +R28 +L83 +R14 +L52 +L448 +L672 +R47 +L64 +R64 +L50 +L525 +L344 +R88 +L791 +R75 +R72 +R585 +L120 +R77 +L13 +R71 +R54 +L254 +L37 +R37 +L85 +R85 +R68 +L99 +R44 +L513 +R58 +R72 +R70 +R69 +R31 +R1 +L63 +R50 +L88 +L97 +R97 +L79 +L45 +R51 +R73 +L38 +L764 +L46 +R41 +L80 +L94 +L474 +R55 +R41 +L69 +R48 +R37 +R35 +R388 +L20 +R40 +R184 +R7 +L60 +L31 +L54 +L35 +L11 +R770 +R88 +L58 +L716 +L84 +L422 +R922 +R9 +R83 +L209 +R60 +R15 +L89 +L69 +L62 +R68 +R59 +R35 +L64 +L36 +L8 +R46 +R337 +L69 +L7 +L86 +L313 +R49 +L74 +L737 +R708 +L34 +L1 +R48 +L46 +R653 +R66 +L66 +R34 +R105 +L5 +L57 +R57 +L66 +L16 +R49 +R55 +R28 +R80 +R80 +R34 +L44 +L31 +L25 +L69 +R25 +L635 +L968 +L49 +R52 +R48 +R819 +R4 +L71 +R23 +L23 +R904 +R88 +R108 +L75 +R75 +R192 +R27 +L760 +R14 +L98 +R25 +R392 +L392 +R73 +R227 +R70 +L42 +L10 +R8 +L26 +L83 +L560 +R28 +L75 +L626 +R416 +R362 +R38 +L6 +R45 +L139 +L81 +R81 +R18 +L32 +R378 +L164 +R13 +L2 +L11 +R63 +R7 +R30 +R54 +L54 +L49 +R49 +R674 +L640 +L50 +R28 +L35 +R8 +L96 +L46 +R57 +L468 +L29 +R381 +R16 +R51 +L4 +R228 +R71 +R54 +L968 +L30 +L55 +R53 +R680 +L280 +R21 +R79 +L84 +R84 +L94 +R94 +R841 +R69 +R62 +R28 +R56 +L56 +L717 +L83 +R45 +L45 +L96 +R52 +R44 +R7 +L7 +L91 +L9 +R825 +L12 +L78 +R65 +L98 +R64 +L20 +R454 +R11 +L595 +R306 +R69 +R98 +R811 +R3 +R97 +L33 +L77 +L35 +R45 +R485 +R47 +L14 +L12 +R937 +L50 +R959 +L52 +L260 +L1 +L39 +R194 +L28 +R634 +L30 +R75 +R82 +R57 +R90 +L212 +L40 +L75 +R682 +L96 +L33 +R82 +L933 +L11 +R532 +L70 +L284 +R84 +R66 +L37 +R71 +L497 +L715 +R66 +R46 +L35 +R2 +L94 +R66 +L654 +L314 +L71 +R58 +L85 +R69 +R43 +L98 +L91 +R804 +R47 +L47 +L42 +R17 +L58 +L53 +L164 +R17 +R858 +R61 +R892 +R72 +R45 +R55 +R68 +R32 +L54 +R38 +L235 +L24 +L54 +L62 +R54 +R65 +R44 +R34 +R14 +R857 +L77 +R91 +L45 +R450 +R4 +L9 +R19 +R43 +L86 +L90 +R23 +L14 +R62 +R52 +L615 +L696 +L75 +L648 +R34 +L13 +R626 +L59 +R46 +R66 +R65 +R69 +R94 +R3 +R46 +R23 +L93 +L95 +R22 +R63 +L98 +R499 +L17 +R53 +L610 +R38 +R89 +R15 +L3 +L229 +L47 +L731 +R81 +L17 +L86 +R326 +R21 +R53 +L60 +R60 +R443 +L633 +R66 +L76 +L676 +L99 +L93 +R68 +L88 +L40 +L72 +L67 +L842 +L25 +R34 +R97 +L97 +R263 +L731 +R39 +R24 +R5 +R35 +L46 +L89 +L85 +R85 +L85 +L815 +L7 +L58 +R61 +L7 +R26 +R81 +L96 +R76 +L5 +L98 +L73 +L38 +L34 +L60 +R70 +L59 +L96 +L75 +R17 +L52 +R69 +L82 +R543 +R23 +L26 +L88 +L12 +L25 +L67 +R92 +R34 +L16 +L87 +R69 +R44 +L25 +L19 +L815 +R15 +L715 +L61 +R76 +R603 +L42 +R39 +L251 +L85 +L53 +L87 +R77 +L488 +R33 +L8 +L14 +L73 +L27 +L12 +R88 +L322 +R577 +R445 +R7 +L709 +L185 +L14 +R901 +R388 +R12 +R1 +R78 +R34 +R98 +R75 +L79 +L82 +R91 +L455 +R53 +R79 +L993 +L53 +R902 +R53 +L2 +L38 +R38 +L42 +R56 +R586 +L227 +L25 +L8 +L40 +R747 +L47 +L90 +L10 +R53 +L86 +L67 +R14 +R10 +R42 +L66 +L83 +L17 +R12 +R88 +R47 +R17 +R636 +R362 +L51 +R12 +R77 +R77 +L74 +L3 +R97 +R55 +L52 +R594 +L19 +L475 +L4 +R47 +R57 +L70 +R70 +R46 +L143 +L80 +R87 +L8 +R333 +R18 +R847 +R10 +L610 +R23 +L223 +R521 +L16 +L12 +R7 +L36 +R36 +L83 +R83 +R61 +R19 +R86 +L132 +L11 +R27 +R51 +L68 +L94 +R61 +R80 +L80 +L56 +R734 +L34 +L462 +L18 +L64 +L1 +L71 +R65 +R907 +L64 +L46 +R196 +R62 +L48 +R36 +R45 +R40 +R72 +R60 +L53 +L28 +L81 +R44 +R65 +L77 +R977 +R64 +R436 +L88 +L72 +L40 +R81 +R89 +L424 +L946 +R19 +R49 +L353 +L15 +L762 +R2 +R19 +R41 +R81 +R719 +L56 +L44 +R82 +R26 +R44 +R48 +L89 +R38 +R51 +R592 +R508 +L98 +R93 +L55 +R28 +R932 +L5 +R5 +L81 +R81 +L32 +R32 +R81 +R648 +L29 +L99 +L1 +R52 +R48 +L29 +L71 +L23 +R4 +L81 +L21 +R21 +L8 +R43 +L60 +R14 +R51 +L19 +L21 +L623 +L77 +L129 +L40 +R85 +L69 +R953 +R57 +R18 +L875 +R17 +R33 +R86 +R990 +R48 +L74 +R77 +R23 +R512 +R94 +R55 +R35 +L18 +R57 +R65 +L6 +L91 +R97 +R43 +R40 +L85 +L69 +R857 +R20 +L96 +R90 +L5 +R54 +R38 +R913 +L31 +R94 +L63 +R15 +R185 +R43 +L72 +R10 +L2 +R64 +L87 +L75 +L42 +L239 +R83 +L32 +L680 +R767 +L39 +L13 +L14 +R892 +R55 +R681 +R92 +L92 +R36 +L686 +R19 +R64 +R67 +L42 +R75 +L42 +L903 +R94 +L82 +L75 +R19 +R56 +L702 +R2 +R614 +L89 +R78 +L9 +R6 +L183 +R83 +R95 +R170 +L32 +L81 +R88 +L40 +L53 +R153 +L64 +R30 +R234 +R487 +R13 +L35 +R55 +L80 +L40 +R41 +R35 +R6 +L82 +L88 +L34 +R977 +L42 +L99 +L73 +R78 +R84 +R29 +R52 +L733 +L52 +L593 +L95 +R89 +R60 +L60 +R28 +L12 +R84 +R19 +L19 +L17 +R119 +R50 +L52 +R42 +R58 +R63 +R37 +L677 +R29 +R48 +L369 +R69 +R35 +R28 +R48 +R47 +R52 +L6 +R40 +R56 +L51 +R868 +R66 +L32 +L51 +L80 +R67 +R776 +R95 +R92 +L28 +L293 +L83 +R54 +R129 +R297 +L776 +R93 +R730 +R42 +R85 +R77 +R470 +L21 +R99 +L39 +R94 +L78 +L38 +R36 +L366 +R27 +L61 +R686 +R27 +L13 +R280 +L93 +L73 +R17 +L6 +L8 +L17 +R683 +L42 +L90 +L51 +L54 +R21 +L63 +R76 +L6 +R862 +R1 +R25 +R91 +R47 +L27 +L7 +R34 +L15 +R38 +R77 +R37 +R55 +L47 +R32 +L589 +L88 +L53 +R42 +R88 +L77 +L619 +L81 +R93 +L37 +L952 +L18 +L86 +L40 +L360 +R6 +R671 +L86 +L4 +L37 +R66 +R18 +R8 +L57 +L985 +L55 +R93 +R961 +L32 +R56 +R50 +R27 +R2 +L54 +L48 +R338 +R27 +R84 +R8 +L45 +R17 +R71 +R8 +L8 +L458 +R97 +L76 +R49 +R88 +R58 +R6 +L64 +L38 +L62 +R5 +R66 +L38 +R32 +R39 +R94 +R96 +L71 +L52 +L87 +R78 +R79 +R39 +L29 +R63 +R86 +R18 +R82 +L55 +R257 +L16 +R73 +R7 +L25 +R82 +R295 +L612 +L98 +L43 +L465 +L658 +R58 +L56 +R56 +L366 +R66 +R31 +R94 +L27 +R2 +R327 +L20 +R61 +L29 +L74 +L65 +R49 +R51 +R32 +R968 +R96 +L70 +R574 +R5 +R895 +L16 +L198 +L86 +R76 +R941 +R13 +L81 +R91 +R572 +R82 +L55 +R87 +R74 +L64 +L36 +L14 +L46 +L905 +R65 +R42 +L75 +R94 +R23 +L75 +R77 +R14 +L53 +L247 +L962 +R4 +R719 +R5 +R87 +R47 +L60 +L86 +R84 +L32 +R34 +L99 +R75 +R77 +R54 +L88 +R98 +R417 +R36 +R90 +R408 +L47 +R39 +L83 +R23 +L40 +L31 +R21 +L20 +R30 +L28 +L3 +R72 +L43 +L41 +R77 +L634 +L59 +L72 +L63 +L306 +L34 +L73 +L51 +L95 +L47 +R94 +R238 +L832 +L49 +L41 +L97 +R380 +R7 +L35 +R5 +L38 +R89 +R60 +R38 +R6 +L825 +L57 +L954 +R11 +R68 +L35 +L446 +R13 +R98 +L98 +L82 +R82 +L61 +L70 +R31 +R9 +L4 +R81 +R14 +L39 +L61 +R434 +L47 +R13 +R439 +R69 +L21 +L258 +R36 +L28 +L35 +L8 +L488 +L213 +L363 +L530 +L42 +R42 +L82 +R58 +R24 +L24 +R24 +L44 +L23 +L39 +L31 +L876 +R638 +L825 +L2 +L98 +R30 +R59 +R13 +L60 +L59 +L9 +L875 +L661 +L516 +L615 +R298 +R179 +L79 +R71 +R24 +L13 +R32 +R81 +R75 +L75 +L810 +L240 +R932 +R94 +R519 +R61 +R44 +R69 +R692 +R39 +L60 +L40 +L64 +R64 +R7 +L7 +L924 +R24 +R74 +R33 +R133 +R60 +L33 +L436 +R726 +R43 +L10 +R561 +R55 +R66 +R28 +L33 +L67 +R35 +L397 +R367 +R95 +R1 +R99 +R4 +R96 +R85 +L85 +L90 +R474 +L84 +R35 +L35 +R25 +R75 +L40 +R90 +R50 +L9 +L91 +L5 +L56 +L54 +L399 +R37 +R77 +R146 +L8 +L79 +R1 +R440 +L29 +L171 +L97 +L90 +L90 +L21 +L2 +L27 +L78 +L364 +L44 +L360 +L27 +L92 +L83 +R175 +L73 +R49 +L38 +R62 +L79 +L45 +R69 +L34 +R89 +L45 +L55 +R359 +R85 +R556 +L297 +R49 +L809 +L99 +L121 +R29 +L88 +L64 +R72 +R28 +R55 +R69 +L24 +L63 +L54 +R9 +L92 +L917 +R89 +R28 +L86 +L14 +L46 +L54 +R86 +R27 +R24 +R87 +R76 +R65 +L65 +L829 +R69 +L40 +L37 +R37 +L47 +R47 +R721 +R79 +L50 +R50 +L24 +R24 +R6 +L85 +L36 +L85 +R614 +R86 +L204 +L696 +L403 +L97 +L57 +R78 +L989 +R91 +R695 +L518 +R89 +L97 +R308 +L16 +L850 +R30 +R53 +R96 +L3 +R14 +L94 +L66 +L64 +L11 +R11 +R93 +L93 +R92 +L65 +L1 +L50 +L76 +R87 +R52 +L39 +L15 +R43 +R86 +L14 +R85 +L194 +R9 +R512 +R681 +R41 +R266 +L12 +L625 +R337 +R10 +R48 +L58 +L41 +R53 +R8 +R50 +L70 +R74 +L31 +L43 +L63 +L48 +R876 +L65 +R38 +L840 +L24 +L901 +R83 +L419 +R908 +L471 +L255 +L5 +R36 +L597 +R48 +R64 +L18 +L22 +R306 +L80 +R13 +L64 +L418 +L80 +R98 +R75 +L37 +L638 +L27 +R20 +R28 +L20 +R39 +L93 +R6 +R47 +L120 +R14 +R406 +L42 +R42 +L63 +L837 +L66 +L7 +L227 +R447 +L46 +L1 +L535 +R431 +L96 +R23 +R51 +L734 +L161 +L79 +R97 +L55 +L42 +L58 +L35 +R12 +L26 +R29 +R23 +R92 +R63 +L66 +R90 +R86 +L1 +L59 +L50 +R6 +R7 +R87 +R96 +R53 +R77 +L26 +R1 +L17 +R16 +R389 +R11 +L27 +L84 +R611 +L7 +L93 +L886 +L14 +L69 +R29 +R16 +L95 +R45 +R374 +R93 +R78 +L236 +R33 +R132 +L913 +R13 +R86 +L386 +L88 +R21 +R37 +L70 +L12 +L16 +L34 +R62 +R63 +L8 +L394 +L61 +R98 +R2 +L65 +R930 +L65 +R69 +L85 +L84 +L12 +R11 +L708 +R99 +R910 +L90 +L48 +R354 +R79 +L683 +R15 +L83 +L65 +L79 +R16 +R84 +R66 +L76 +R22 +L69 +L313 +R70 +L4 +L10 +R76 +L57 +L405 +L32 +R32 +L80 +R53 +R3 +R92 +R99 +L67 +L16 +L64 +L8 +R57 +R50 +R34 +R6 +L3 +L56 +R761 +R39 +L45 +R346 +L1 +R35 +L979 +R35 +L6 +R15 +L40 +L60 +R33 +R44 +L759 +R607 +L17 +L30 +R12 +L90 +R39 +R61 +L67 +R88 +R79 +R59 +R1 +R44 +R52 +R45 +R999 +L44 +R35 +R87 +R61 +L39 +L554 +R54 +L5 +R3 +L85 +L311 +R98 +R95 +R76 +R21 +R8 +L11 +R411 +L47 +R79 +L167 +R95 +L60 +R24 +L245 +R952 +R15 +R554 +L494 +R52 +R39 +R95 +R8 +L27 +L46 +R76 +L3 +R624 +R56 +L22 +L817 +L180 +R39 +R59 +L76 +L41 +R26 +L97 +R629 +L58 +R50 +R8 +L93 +L37 +L56 +R86 +R74 +R582 +L76 +L48 +R72 +R51 +R45 +R58 +R71 +L879 +L50 +R78 +L78 +R53 +R747 +R60 +L50 +R22 +L23 +L9 +L76 +L24 +L63 +R63 +R68 +L6 +L233 +R44 +R75 +L920 +L7 +R99 +R94 +L215 +R1 +R9 +R88 +R92 +L32 +L57 +L959 +R793 +L89 +R55 +L558 +R46 +R12 +R5 +L37 +L556 +L7 +R65 +R69 +L37 +L2 +L41 +L59 +R14 +R57 +L4 +L452 +R42 +L46 +L38 +L11 +R346 +R92 +L32 +R42 +R12 +R558 +R4 +R16 +L826 +R826 +L28 +R28 +L60 +L69 +R29 +L2 +R31 +R571 +L930 +R30 +R303 +R81 +R70 +L54 +R71 +R89 +L38 +L22 +R75 +R725 +L252 +R267 +R185 +L754 +R35 +R41 +L22 +L60 +L3 +L237 +L95 +L6 +R21 +R22 +L16 +L77 +L50 +R42 +R54 +L2 +R7 +L333 +R72 +L40 +L99 +R13 +R7 +R97 +L32 +R1 +R91 +L51 +L14 +L12 +R54 +L68 +R14 +R85 +L18 +R33 +L13 +R12 +R1 +R37 +R63 +L15 +R14 +L3 +L29 +L67 +R78 +R57 +L74 +L19 +L87 +L55 +R45 +R8 +L53 +L35 +L26 +R82 +L27 +R67 +R39 +R16 +L78 +R62 +L9 +R77 +L68 +R81 +L52 +R91 +L67 +L53 +R9 +L6 +L3 +L48 +L30 +R10 +L27 +L50 +L36 +L13 +R26 +L47 +R47 +L38 +L16 +L21 +L36 +R7 +R25 +L26 +R41 +L25 +R11 +R30 +R23 +L8 +R24 +L20 +L40 +L30 +L12 +L25 +R32 +R35 +R18 +L37 +R35 +R38 +L16 +R50 +L25 +R34 +L44 +L23 +R37 +R40 +L2 +R13 +L49 +L7 +L12 +L35 +R50 diff --git a/src/exercises/day_1.ts b/src/exercises/day_1.ts index 95303f3..787404f 100644 --- a/src/exercises/day_1.ts +++ b/src/exercises/day_1.ts @@ -1,4 +1,108 @@ -export default function FirstDayExerciseName() { - console.log("test_module"); - return 1; +type Direction = "L" | "R"; +interface Intruction { + direction: Direction; + quantity: number; +} + +const INITIAL_POSITION = 50; +const MAX_POSITION = 99; + +export default async function FirstDayExerciseName() { + const instructions = await read_instruction_input(); + const zero_count = find_zero_count(instructions); + const zero_count_any = find_zero_count_any(instructions); + console.log(">> zero_count", zero_count, zero_count_any); +} + +function classic_module(left: number, right: number): number { + return ((left % right) + right) % right; +} + +function find_zero_count_any(instructions: Intruction[]): number { + let zero_count = 0; + let current_position = INITIAL_POSITION; + + instructions.forEach((instruction) => { + let count = 0; + // NOTE: Ugly solution, mathematics obvious does not work since are all positive numbers and HUGE rotations are allowed + switch (instruction.direction) { + case "L": + while (count < instruction.quantity) { + current_position -= 1; + if (current_position < 0) { + current_position = classic_module( + current_position, + MAX_POSITION + 1, + ); + } + if (current_position === 0) { + zero_count += 1; + } + count++; + } + break; + case "R": + while (count < instruction.quantity) { + current_position += 1; + if (current_position > MAX_POSITION) { + current_position = classic_module( + current_position, + MAX_POSITION + 1, + ); + } + if (current_position === 0) { + zero_count += 1; + } + count++; + } + break; + } + }); + + return zero_count; +} + +function find_zero_count(instructions: Intruction[]): number { + let zero_count = 0; + let current_position = INITIAL_POSITION; + + instructions.forEach((instruction) => { + switch (instruction.direction) { + case "L": + current_position = classic_module( + current_position - instruction.quantity, + MAX_POSITION + 1, + ); + break; + case "R": + current_position = classic_module( + current_position + instruction.quantity, + MAX_POSITION + 1, + ); + } + if (current_position === 0) { + zero_count += 1; + } + }); + + return zero_count; +} + +async function read_instruction_input(): Promise { + const txt_input: string = await globalThis.Deno.readTextFile( + "src/exercises/assets/day_1_input.txt", + ); + // NOTE: regex is useles here, since the split is done manually + const data_regex = new RegExp(/([RL][0-9]+)/g); + const data_match = txt_input.match(data_regex); + const instruction_list: Intruction[] = []; + data_match?.forEach((instruction) => { + const direction = instruction.slice(0, 1); + const quantity = instruction.slice(1); + instruction_list.push({ + direction: direction as Direction, + quantity: parseInt(quantity), + }); + }); + return instruction_list; } diff --git a/src/main.ts b/src/main.ts index 45be015..03023b9 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,17 +1,17 @@ -async function main(): Promise { - const args = Deno.args; - if (!args || args.length !== 1) { - return Promise.resolve(-1); - } - const day = parseInt(args[0]); - - const module = await import(`./exercises/day_${day}.ts`); - module.default(); - - return Promise.resolve(0); -} - // Learn more at https://docs.deno.com/runtime/manual/examples/module_metadata#concepts if (import.meta.main) { - await main(); + await main(); +} + +async function main(): Promise { + const args = globalThis.Deno.args; + if (!args || args.length !== 1) { + return Promise.resolve(-1); + } + const day = parseInt(args[0]); + + const module = await import(`./exercises/day_${day}.ts`); + await module.default(); + + return Promise.resolve(0); }