diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index ccae114..e5f9eb8 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -27,6 +27,8 @@ jobs: - 'year_2023/**' year_2024: - 'year_2024/**' + year_2025: + - 'year_2025/**' - id: set-matrix run: echo "::set-output name=matrix::$(./list_test_combinations.sh ${{ join(fromJSON(steps.filter.outputs.changes), ' ') }})" diff --git a/year_2025/Cargo.lock b/year_2025/Cargo.lock new file mode 100644 index 0000000..a3901fa --- /dev/null +++ b/year_2025/Cargo.lock @@ -0,0 +1,32 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aoc_utils" +version = "0.1.0" +dependencies = [ + "num-traits", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "year_2025" +version = "0.1.0" +dependencies = [ + "aoc_utils", +] diff --git a/year_2025/Cargo.toml b/year_2025/Cargo.toml new file mode 100644 index 0000000..d5079c4 --- /dev/null +++ b/year_2025/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "year_2025" +version = "0.1.0" +edition = "2024" + +[dependencies] +aoc_utils = { path = "../aoc_utils" } diff --git a/year_2025/input/day1.txt b/year_2025/input/day1.txt new file mode 100644 index 0000000..a1f3ad8 --- /dev/null +++ b/year_2025/input/day1.txt @@ -0,0 +1,4577 @@ +R1 +R25 +R50 +R10 +L20 +L14 +L26 +L5 +R19 +R35 +R36 +R1 +L50 +L20 +L34 +L2 +L31 +L22 +L8 +L43 +R25 +L20 +L18 +L14 +R24 +L30 +L48 +L2 +L23 +L7 +R46 +L17 +L41 +L41 +L26 +L12 +R3 +R23 +R39 +L35 +L39 +L34 +L47 +L28 +R44 +L17 +R35 +R44 +L49 +L75 +L89 +R94 +R71 +L98 +L90 +L91 +L58 +R49 +R35 +R65 +L71 +R91 +L7 +R61 +R66 +L28 +L12 +R59 +L88 +L71 +L75 +L24 +L25 +L44 +R68 +R69 +L99 +R62 +L84 +R52 +R23 +L23 +R69 +R96 +R35 +R45 +R55 +R39 +R61 +L1 +L20 +R70 +L49 +L97 +R97 +R36 +R68 +L4 +R22 +R61 +R22 +R95 +R63 +L82 +R45 +R9 +R83 +R86 +R96 +R49 +L49 +L48 +L68 +R150 +R66 +R89 +L589 +R85 +R15 +L70 +R70 +L95 +L305 +R28 +R72 +R58 +L47 +R50 +L61 +L25 +R25 +L43 +L34 +L23 +R95 +R84 +R821 +R83 +L25 +R90 +R366 +L639 +R25 +R70 +R22 +L75 +L117 +L77 +R67 +L490 +R23 +R277 +L55 +L25 +L20 +L9 +R66 +L34 +R83 +R82 +L76 +L18 +L54 +R60 +L305 +L87 +R81 +L71 +R4 +L22 +R255 +L655 +L91 +L9 +L398 +L40 +R56 +R13 +L88 +R73 +L55 +L61 +L87 +R405 +R27 +L45 +L80 +R80 +L72 +L96 +R68 +R60 +R825 +R8 +R207 +R96 +L55 +R59 +L71 +R98 +R3 +L230 +R50 +L50 +L729 +R15 +R11 +L86 +R62 +R27 +L6 +L94 +R54 +R51 +L5 +L88 +L89 +L123 +R88 +L349 +R42 +L51 +L88 +R15 +R44 +L94 +L29 +L78 +R49 +L86 +R85 +L36 +R54 +L146 +L20 +R6 +R94 +L35 +L46 +L17 +R23 +R74 +L99 +R95 +L26 +L47 +R52 +L74 +L96 +L51 +R47 +L239 +R48 +R186 +L44 +L18 +L33 +R83 +R3 +R561 +R86 +L933 +R527 +R88 +R85 +L186 +R86 +L1 +L99 +L3 +L97 +R68 +L81 +L50 +R360 +L46 +R70 +R81 +L2 +L87 +R92 +R95 +R39 +R4 +L90 +R603 +R467 +R36 +L24 +L35 +R12 +L46 +L80 +R65 +R28 +R51 +R70 +R83 +L26 +L431 +R818 +R114 +L58 +L29 +R29 +L65 +R23 +R22 +R343 +L593 +L56 +L174 +L65 +R65 +L79 +R19 +R50 +R12 +R90 +L92 +R89 +R11 +L20 +L80 +L88 +R98 +L10 +L540 +L901 +R41 +R57 +L27 +R12 +L589 +L35 +L218 +L79 +R79 +L578 +R12 +R16 +R71 +L421 +L18 +L82 +R37 +R63 +L50 +R50 +R71 +R71 +R58 +R34 +L534 +L390 +R862 +L204 +R70 +R97 +L35 +L333 +R430 +L59 +R7 +L893 +L33 +L19 +L35 +R35 +R43 +L43 +R63 +L63 +R88 +L188 +L32 +R84 +L52 +R69 +R31 +L445 +L33 +L88 +R201 +L35 +L30 +R30 +R26 +L82 +L638 +R16 +L62 +L60 +R16 +L42 +R36 +L65 +L63 +R775 +L57 +L4 +R1 +L21 +R77 +R47 +L62 +R44 +R29 +L17 +R80 +R67 +L79 +L6 +R44 +R669 +R46 +L15 +L57 +L25 +R14 +L47 +R415 +L81 +L19 +L23 +R263 +L55 +L433 +L49 +R1 +L1 +L95 +R99 +L31 +L18 +R90 +R588 +R54 +L94 +L96 +L46 +R183 +L437 +R803 +L59 +R95 +L46 +L13 +R20 +L60 +R92 +L14 +L18 +L134 +L66 +R73 +R11 +L28 +L56 +R15 +R7 +R24 +L246 +L830 +R25 +R5 +L58 +L8 +R24 +L58 +R998 +R4 +R998 +L99 +R9 +R790 +L51 +R39 +L49 +L339 +L852 +L69 +L70 +R49 +L26 +R70 +R13 +R85 +L21 +L13 +L65 +L60 +L41 +R915 +L102 +R64 +R85 +R6 +R17 +L61 +R689 +L13 +R778 +L13 +L22 +R78 +R79 +L40 +L75 +L491 +R48 +R58 +L80 +L20 +R51 +L51 +R92 +R7 +R29 +R47 +R6 +L81 +R93 +L775 +L98 +R34 +L16 +L65 +L73 +R66 +R34 +R64 +L64 +R63 +R537 +L19 +R19 +R772 +L72 +R15 +R785 +L76 +R76 +R83 +R17 +R94 +R54 +R70 +R303 +R19 +R60 +L90 +L38 +L72 +R24 +R43 +L67 +R42 +R46 +R12 +R53 +R217 +R493 +R49 +R60 +R85 +L57 +R88 +L43 +L89 +R18 +L994 +L80 +R23 +R77 +L2 +R106 +R96 +L621 +R24 +L3 +R29 +L266 +L63 +L40 +R40 +L78 +L26 +R58 +R51 +R595 +L94 +L11 +R11 +R22 +R32 +R86 +L85 +R839 +L40 +L260 +L80 +R23 +L23 +L630 +L86 +L404 +L13 +R13 +R48 +L33 +L65 +R85 +R59 +R23 +L306 +R857 +L68 +R75 +R5 +R20 +L127 +R966 +R61 +R86 +R14 +L39 +R39 +R20 +L17 +L83 +L55 +L858 +L56 +L805 +R7 +R47 +R6 +R96 +R98 +L3 +R3 +R68 +R14 +L82 +R472 +L4 +L49 +R81 +L93 +L907 +L47 +R65 +L78 +R130 +L35 +R65 +L55 +L72 +R83 +R52 +L8 +L10 +L490 +R14 +R34 +R52 +R415 +R75 +R68 +L360 +L74 +L24 +L3 +L20 +L63 +L14 +L3 +R9 +L21 +R15 +L971 +R25 +L43 +L97 +R221 +L35 +L10 +L390 +L31 +R384 +L941 +L12 +L55 +L23 +R78 +R51 +R695 +R54 +R305 +L315 +R10 +R58 +L16 +L78 +L59 +R2 +L76 +R786 +R10 +R80 +L29 +L78 +L96 +L804 +R889 +R17 +L87 +L19 +R42 +L20 +L15 +L251 +R82 +R829 +L87 +R69 +L35 +R10 +R74 +L457 +L51 +L7 +R31 +R82 +R55 +R19 +R30 +R94 +L94 +R99 +R259 +R42 +R18 +L718 +R92 +L56 +L36 +L403 +L25 +R28 +L331 +R31 +R70 +R13 +L77 +R94 +L33 +L776 +R56 +L48 +R64 +R21 +R97 +R19 +L694 +L953 +R63 +R884 +R356 +L56 +R532 +L88 +R576 +L44 +R254 +L530 +R6 +R65 +L671 +R10 +R90 +L74 +L536 +R10 +R44 +R92 +L5 +L720 +L476 +R176 +L628 +L83 +L89 +L41 +R15 +R15 +R58 +L158 +L53 +R53 +L35 +R45 +R390 +R15 +L89 +R22 +L48 +R51 +L77 +R3 +R65 +R58 +R79 +R137 +R40 +R84 +R6 +L52 +L994 +R28 +L4 +L35 +R11 +R19 +L74 +R55 +R77 +R53 +R70 +L89 +L9 +R52 +R96 +R19 +L56 +R26 +L39 +L93 +L34 +L55 +L18 +R14 +R972 +L37 +L2 +L854 +R88 +L11 +R93 +L618 +L134 +L11 +L439 +L61 +R932 +L90 +L57 +R96 +L73 +R655 +R623 +R799 +L30 +L55 +L85 +R49 +R6 +R30 +R24 +R94 +L39 +R27 +R51 +R5 +L6 +R38 +R15 +R20 +L29 +L84 +R19 +L35 +L84 +L416 +R25 +R14 +L44 +L86 +R91 +R731 +L231 +L643 +R186 +L20 +L475 +R152 +R99 +L51 +L41 +L73 +R637 +L88 +R548 +R269 +R368 +L16 +L57 +R5 +R57 +R47 +L4 +L84 +R384 +R71 +R329 +L75 +R75 +L34 +L66 +L348 +R46 +R28 +R117 +R626 +L53 +L16 +L34 +L83 +L83 +L15 +L85 +L574 +L95 +R37 +L49 +R81 +R98 +R101 +R12 +R318 +R84 +R87 +R67 +R66 +L686 +R53 +R9 +L9 +R98 +R93 +R649 +L24 +R84 +L56 +L44 +R37 +R63 +L75 +R1 +R884 +R90 +L43 +R72 +R31 +R53 +R44 +L33 +L17 +L107 +L68 +L932 +L67 +R72 +R80 +L71 +L14 +R97 +R123 +R317 +R63 +R56 +L56 +L5 +L95 +L91 +L349 +R241 +R641 +L37 +L71 +R966 +L445 +L7 +R84 +R468 +L11 +R11 +L29 +R329 +L881 +R81 +L417 +L91 +R8 +L98 +R58 +L59 +R60 +R29 +R50 +R60 +R6 +R94 +L258 +L42 +L36 +L3 +L61 +R17 +L35 +R59 +R32 +R40 +L89 +L28 +L53 +R80 +R95 +L36 +L74 +L5 +R42 +R55 +L67 +L45 +R12 +R294 +R47 +L644 +R96 +L93 +R43 +L543 +L85 +R131 +L646 +R34 +L34 +L79 +R23 +L80 +L64 +L6 +L60 +L28 +R394 +L417 +L883 +R73 +R95 +R32 +R91 +L70 +L3 +L18 +L55 +L45 +L44 +R944 +L337 +L98 +R51 +R84 +L52 +L48 +R76 +R72 +R71 +R46 +R335 +L13 +L87 +R803 +L23 +L80 +R82 +L755 +L55 +R54 +R154 +L73 +L38 +L69 +L71 +R73 +R70 +L27 +R62 +R793 +R235 +R67 +L2 +R76 +L59 +R183 +R63 +R37 +R98 +L82 +R984 +R82 +L82 +R66 +L39 +R301 +L28 +L99 +L83 +L23 +R27 +L99 +L53 +L15 +L69 +R14 +L23 +L58 +L102 +R455 +L183 +R95 +L87 +R89 +L386 +L84 +L70 +R273 +L519 +R81 +L181 +R58 +R91 +L49 +L70 +L58 +R28 +R57 +L57 +L180 +R15 +R23 +R48 +R133 +R57 +R13 +R91 +R80 +L176 +R8 +L75 +L89 +L87 +L12 +L49 +L731 +R20 +R78 +L28 +L39 +R581 +R70 +L36 +L15 +L829 +L71 +R84 +R225 +L38 +R98 +L869 +L496 +R98 +R94 +L96 +L68 +R68 +R67 +R33 +R85 +L85 +R47 +R75 +R547 +L969 +L57 +L43 +R55 +R80 +R30 +L65 +L53 +L37 +R90 +L35 +L64 +L56 +L45 +R37 +L37 +L62 +R62 +R92 +R8 +L70 +L16 +R68 +L82 +R9 +R26 +L82 +L96 +R10 +L6 +R63 +R558 +R2 +L84 +L844 +R392 +R58 +R694 +R83 +R356 +R37 +L76 +R357 +L55 +L2 +L35 +R76 +L64 +R23 +R76 +R673 +L49 +L63 +R85 +L179 +R57 +R690 +R98 +R12 +L74 +R71 +R46 +R51 +R17 +R63 +R26 +R34 +R366 +R68 +L868 +L86 +R54 +L649 +R81 +L321 +R21 +L3 +R3 +R10 +L10 +L76 +R82 +L206 +L65 +L162 +L162 +L88 +L23 +R586 +L86 +R37 +R26 +R81 +R56 +L596 +L2 +R398 +L51 +R15 +L64 +L23 +R2 +R985 +L19 +R2 +R553 +R56 +L52 +R196 +L621 +L79 +R70 +L60 +R90 +L19 +L87 +L2 +R54 +L26 +R6 +L69 +R51 +R12 +L35 +R55 +R60 +R32 +L126 +R4 +R28 +R53 +L91 +R81 +L37 +L944 +L60 +R41 +R619 +R52 +R509 +R99 +R40 +R4 +R478 +R51 +R80 +R61 +R26 +L32 +R25 +L38 +L68 +L87 +R6 +R15 +L21 +L155 +L1 +R495 +R48 +R88 +L75 +R14 +R27 +L8 +L633 +L87 +L2 +R389 +L93 +R44 +L3 +L72 +R24 +L59 +L87 +L16 +R236 +L74 +L82 +L8 +R25 +L35 +L7 +L93 +R81 +L79 +R98 +R22 +R578 +R43 +R57 +L57 +R931 +L74 +L82 +L37 +R19 +L4 +R45 +R59 +L30 +L49 +L221 +R13 +R63 +R71 +L23 +R38 +L251 +R470 +L5 +L872 +L4 +L72 +R73 +L1 +L69 +L31 +R583 +R17 +R48 +R52 +R208 +L708 +L86 +L814 +L87 +L51 +L62 +L34 +L35 +R61 +R8 +L197 +L3 +R19 +L19 +L25 +R48 +L23 +R95 +R505 +L28 +R528 +R71 +R54 +R75 +L92 +L641 +R25 +L292 +L97 +R72 +R191 +R235 +R23 +L424 +R67 +R37 +R96 +R95 +R96 +L382 +R82 +L38 +L97 +R45 +L562 +R61 +R81 +R437 +R83 +R92 +L593 +L55 +R55 +R569 +R31 +R52 +R9 +L43 +R4 +R24 +R74 +R78 +R93 +L91 +R46 +R54 +R95 +R32 +R69 +R8 +L8 +R4 +R91 +R9 +R95 +R30 +L195 +L88 +R42 +R23 +R25 +R468 +L207 +R7 +L57 +R984 +R574 +R99 +L3 +L24 +L990 +R2 +L330 +R58 +L13 +R95 +R56 +L51 +R349 +L5 +R24 +R332 +R6 +R19 +R75 +L823 +R10 +R38 +R843 +R667 +R595 +L34 +L60 +R35 +L71 +R32 +L66 +L166 +L408 +L47 +R5 +R856 +L63 +L285 +L86 +R28 +R72 +L672 +L5 +L20 +R25 +R71 +L71 +L90 +R70 +R32 +L12 +R58 +R42 +R54 +L473 +R19 +R19 +L78 +R37 +R37 +L515 +R90 +R10 +L345 +R1 +R83 +L29 +R7 +L73 +L546 +R92 +L90 +L728 +L972 +R74 +R84 +R326 +L84 +L91 +L96 +L113 +R59 +R95 +R11 +R829 +L51 +R43 +R14 +L660 +R160 +R22 +R79 +L79 +R978 +R73 +R680 +L63 +L90 +L75 +R49 +R12 +R19 +R95 +L32 +L68 +L289 +L966 +R59 +R96 +L6 +L29 +R4 +R31 +R616 +R38 +R78 +R34 +L66 +L20 +R620 +L92 +L69 +L47 +R8 +L531 +L16 +L53 +L488 +L71 +L87 +L68 +L86 +L357 +L263 +L8 +R43 +L815 +L53 +R13 +L33 +L89 +L624 +L886 +L7 +R179 +L54 +L10 +R564 +R81 +L25 +R44 +L43 +L45 +R297 +L3 +L11 +R39 +L234 +R6 +L906 +L412 +L33 +L55 +L66 +L34 +R5 +R4 +R9 +L763 +L48 +R378 +R715 +L414 +R14 +R940 +R441 +L81 +L90 +R87 +R77 +L425 +L54 +L95 +L76 +L33 +R9 +R91 +L247 +R56 +R52 +R48 +R63 +L63 +L69 +R272 +R97 +R34 +R53 +L87 +L51 +L98 +R77 +L28 +R9 +R70 +L70 +R9 +L45 +L973 +L552 +L18 +R67 +L82 +L495 +L82 +L68 +L97 +L267 +R94 +R27 +L927 +R74 +R97 +L527 +R30 +R96 +R53 +R29 +L52 +L47 +L53 +R91 +L20 +L54 +L17 +L65 +R20 +L50 +R95 +R91 +R382 +L73 +R53 +L76 +L77 +R76 +R824 +L31 +R119 +L107 +L481 +L57 +R57 +L20 +L96 +L584 +R22 +R78 +L90 +R86 +R4 +L19 +R83 +R18 +R85 +L64 +L79 +L24 +L239 +L31 +R10 +R76 +R954 +R430 +R467 +R84 +L10 +L41 +R80 +L52 +L65 +R54 +L75 +R40 +L67 +R42 +L83 +L570 +R12 +R29 +L79 +L64 +R73 +L75 +R15 +R4 +R27 +R76 +R330 +R448 +R73 +L52 +R79 +L61 +L39 +L733 +R58 +R40 +R35 +R39 +L36 +L803 +R835 +L28 +L7 +R24 +L724 +R33 +R52 +R98 +L75 +L2 +L98 +L29 +L66 +R887 +L54 +L46 +R443 +L20 +L702 +R79 +L50 +R1 +R49 +R23 +R77 +R80 +L43 +L12 +L2 +R16 +R46 +L85 +R29 +R90 +L86 +R967 +R50 +L56 +L33 +R39 +L29 +L71 +L79 +L77 +R97 +R98 +L21 +L86 +L32 +L32 +R115 +R907 +R10 +R478 +L346 +L13 +L719 +L26 +L79 +L35 +R10 +L70 +R22 +L22 +R71 +L71 +L10 +L75 +R43 +R5 +R37 +R55 +R45 +L16 +L686 +L84 +R886 +L47 +R947 +R230 +L98 +R35 +R9 +R94 +L70 +L45 +L59 +R204 +R91 +R3 +R306 +L64 +L36 +L19 +L839 +L742 +R51 +L70 +L481 +R92 +L792 +R26 +L57 +R85 +R60 +R81 +R1 +R70 +R34 +R83 +R17 +R12 +L12 +R29 +L29 +L549 +L651 +L50 +R385 +L35 +R21 +L75 +R55 +L71 +R13 +R48 +R509 +R20 +L11 +R6 +R52 +L567 +R79 +R21 +L2 +L798 +L93 +L3 +R396 +R75 +L746 +R12 +L2 +R61 +L39 +R47 +L76 +L504 +L28 +R65 +L65 +L31 +R31 +L86 +R86 +R58 +L42 +R84 +L9 +R9 +L58 +R5 +R11 +L58 +L664 +R98 +R38 +R274 +R54 +R72 +L72 +R79 +L69 +R11 +L63 +L7 +R49 +R67 +L88 +R528 +R90 +R33 +R370 +R523 +L29 +R113 +R64 +R3 +R21 +L19 +R13 +R809 +R40 +L538 +L92 +R227 +R65 +R72 +R45 +R764 +R419 +R907 +R30 +R704 +L867 +L36 +L56 +R922 +L304 +R91 +L51 +L33 +R89 +R49 +L323 +R34 +L856 +L39 +L48 +R47 +L538 +L218 +L6 +L28 +L28 +R88 +R43 +L32 +R59 +L70 +L30 +L18 +L82 +R15 +L44 +L878 +R7 +R52 +L48 +R808 +L82 +L99 +R315 +L561 +L71 +R903 +R22 +L39 +L920 +R72 +L17 +R65 +L37 +L51 +L53 +R41 +L509 +R78 +R33 +L366 +R64 +R542 +R22 +L11 +R37 +R75 +L41 +L85 +R61 +R250 +L144 +R994 +L2 +R2 +R819 +R67 +R72 +L7 +L39 +R938 +L34 +L57 +R31 +R10 +L16 +L306 +R25 +L91 +R41 +R45 +R82 +L67 +L13 +L36 +R60 +R992 +L74 +R58 +L344 +R44 +R77 +R77 +L54 +L71 +R452 +L94 +R97 +L25 +L80 +R4 +L83 +L36 +L64 +R26 +R17 +L662 +R10 +R10 +R60 +R9 +R54 +L19 +L105 +R582 +L682 +L477 +R7 +R7 +L833 +L4 +L66 +R85 +R10 +L72 +L24 +R49 +L96 +L89 +R32 +R14 +L81 +R85 +R283 +L16 +R66 +L67 +L990 +L23 +R39 +R61 +R2 +L710 +R8 +R66 +R34 +R42 +R981 +R52 +L14 +R75 +R64 +L772 +L93 +R64 +R1 +R97 +R1 +L54 +L44 +L1 +R754 +L780 +L53 +L46 +L583 +R88 +R21 +R33 +L99 +R566 +L681 +R48 +L720 +R670 +R50 +R75 +R58 +L18 +L82 +L76 +L24 +L608 +L66 +R74 +L35 +L65 +R44 +R35 +R48 +L17 +L98 +R82 +R26 +L511 +R941 +R303 +R648 +R99 +L57 +L60 +L93 +L97 +R7 +R849 +L37 +L3 +L59 +R66 +R684 +R98 +R2 +L61 +L888 +L7 +L44 +L93 +L98 +L9 +R896 +L1 +R119 +R86 +R106 +L6 +L94 +L6 +R4 +L33 +L87 +R593 +L77 +L9 +L58 +L33 +L44 +R944 +L52 +L48 +R40 +R60 +R84 +R16 +L19 +L66 +L3 +L12 +R95 +R126 +L202 +R79 +R14 +L15 +L60 +L62 +L4 +L8 +L63 +L162 +R56 +L94 +R94 +R6 +L63 +L26 +R69 +R65 +R11 +R544 +R9 +R91 +L45 +L7 +L648 +L38 +L62 +R49 +L49 +R49 +L749 +R93 +R805 +R2 +L70 +L706 +R88 +R88 +L85 +R85 +L76 +R76 +L28 +R17 +R38 +L83 +L44 +L55 +L54 +R9 +L2 +L57 +R64 +R72 +L77 +R63 +L63 +L85 +R89 +R31 +R12 +L62 +R15 +L72 +R72 +R21 +R99 +L20 +L81 +L67 +L58 +L94 +R46 +R54 +L8 +L92 +R54 +R69 +L23 +R51 +L351 +R58 +R42 +R11 +R9 +R63 +R17 +R12 +R836 +L20 +L28 +R2 +L95 +R206 +R83 +R504 +L23 +L77 +L969 +R42 +R80 +L74 +L3 +L76 +L941 +R41 +L31 +R24 +L31 +R36 +R201 +L899 +L30 +R56 +R795 +R79 +L6 +R6 +L8 +L92 +L50 +L50 +L26 +R433 +R93 +L67 +L33 +L48 +R43 +R448 +R57 +R6 +R94 +L98 +L2 +R61 +R979 +R460 +R67 +L803 +R66 +L58 +R4 +L45 +L52 +L79 +L44 +R76 +R87 +R81 +L17 +R66 +L49 +L75 +R14 +L26 +L853 +R40 +L71 +R37 +L66 +L55 +R17 +L40 +L65 +L357 +R922 +L22 +R24 +L13 +R89 +R852 +R674 +R44 +R30 +R71 +R336 +R7 +L5 +L9 +R48 +L48 +L468 +R68 +L16 +R16 +R48 +R56 +L39 +L83 +L70 +R73 +L74 +L74 +R87 +R877 +L1 +R28 +R72 +L110 +R10 +R29 +R43 +R95 +R402 +L969 +L41 +L7 +R23 +R4 +L840 +L41 +L858 +R11 +R485 +L63 +R43 +L16 +L63 +L18 +R33 +R659 +R83 +R606 +R35 +L493 +L47 +R5 +R31 +L9 +L22 +L513 +R13 +L39 +R39 +R25 +L25 +R93 +L93 +R616 +R72 +R82 +R6 +R924 +L98 +L6 +R454 +L62 +R12 +R38 +L38 +R4 +R996 +L526 +L74 +L356 +L44 +R95 +L48 +L447 +R61 +R282 +L65 +L78 +R46 +R62 +L8 +R442 +L54 +R80 +L577 +R31 +R88 +R90 +L64 +L36 +L65 +L56 +L681 +R83 +L81 +R78 +R57 +R369 +L95 +L93 +L16 +L740 +L23 +L39 +R70 +L868 +R608 +R98 +R94 +R50 +L81 +L60 +R91 +R27 +R73 +R70 +R45 +R85 +L52 +L38 +R90 +L81 +R81 +R62 +R38 +L22 +R22 +R84 +R35 +R81 +R75 +R25 +R151 +L51 +R890 +L490 +R39 +R61 +R94 +L94 +R80 +R920 +R64 +L64 +L9 +L50 +R259 +L31 +L42 +L227 +R37 +L10 +R473 +R47 +R53 +R24 +R45 +R245 +R127 +L41 +R78 +L84 +R106 +R103 +R72 +R3 +L333 +L31 +R286 +R12 +L12 +L57 +R96 +R61 +L70 +R16 +R970 +L16 +R91 +R981 +L90 +R18 +R21 +L515 +R56 +L58 +L89 +R85 +L342 +L58 +R52 +L94 +R42 +L536 +R36 +L30 +R30 +L72 +L28 +R788 +L88 +R32 +L32 +L35 +L32 +L2 +R89 +L20 +L93 +R39 +L66 +R90 +R359 +R26 +R4 +R41 +R47 +L57 +L963 +R73 +L25 +R24 +R1 +R88 +L588 +L141 +L59 +R28 +L256 +R77 +R25 +R68 +L78 +R15 +R603 +R74 +R21 +L12 +L65 +L89 +R89 +L65 +L45 +L90 +R135 +R20 +R26 +R38 +R81 +R57 +L57 +L63 +L23 +R76 +L61 +L29 +L2 +R28 +L26 +R285 +R907 +R78 +L70 +L927 +L360 +R8 +R992 +L72 +L41 +L32 +L568 +R567 +R81 +L41 +R993 +L3 +L7 +R70 +R66 +L75 +L24 +R973 +R66 +L566 +L635 +R35 +L44 +L258 +R97 +R6 +L1 +L432 +L68 +L44 +L812 +L80 +R75 +R64 +R18 +L21 +L12 +L34 +L80 +R47 +L42 +L13 +R41 +L12 +L630 +L8 +L672 +R15 +R22 +R78 +R57 +L78 +L59 +L15 +R95 +R93 +R7 +R32 +R68 +L54 +R56 +R85 +L87 +L91 +L9 +L61 +L338 +R99 +R5 +L77 +R972 +L41 +R13 +R19 +R85 +L23 +R47 +L56 +R56 +L27 +R11 +R45 +R6 +L65 +R30 +L762 +R28 +L59 +R88 +R45 +L4 +R254 +R21 +R51 +L822 +R52 +R45 +R3 +R60 +R27 +L27 +R27 +R61 +R680 +L83 +L85 +R4 +R796 +L853 +L47 +L15 +R15 +L57 +L43 +L21 +R21 +R45 +L432 +L13 +R58 +L50 +R726 +L7 +L39 +R12 +L34 +R34 +L76 +L3 +L21 +L10 +R989 +L79 +L44 +R86 +R74 +R614 +L20 +L10 +R83 +L83 +L4 +L2 +R14 +R92 +L53 +R53 +R97 +L97 +L338 +L40 +L842 +L65 +R585 +R60 +R28 +R17 +L33 +R814 +R46 +L46 +R47 +R18 +L55 +R97 +R7 +R54 +L62 +R80 +R135 +L407 +L66 +R36 +R30 +R87 +R60 +R53 +R62 +L62 +L96 +L284 +R11 +L31 +L504 +L44 +L78 +L255 +L79 +L62 +R11 +L89 +L234 +L66 +L48 +L72 +L80 +L12 +L388 +L14 +L986 +R34 +L84 +R16 +L21 +L9 +R372 +R92 +L53 +R53 +R16 +R84 +L21 +R72 +L51 +R95 +L95 +R264 +L7 +L48 +L206 +R177 +L991 +L589 +L23 +R23 +R14 +R497 +L127 +R16 +R94 +R6 +L99 +L1 +L81 +R781 +R991 +R55 +L48 +L98 +R16 +R5 +L36 +L85 +L86 +R86 +R78 +R43 +R79 +R16 +R13 +L95 +L59 +R11 +L43 +L67 +R784 +L60 +L92 +R92 +R572 +L59 +L13 +L9 +L72 +R148 +L67 +L598 +R898 +R66 +R10 +L329 +R32 +R76 +L40 +L915 +L50 +L50 +R46 +L41 +L97 +L54 +L39 +L694 +L421 +L601 +L10 +R65 +L54 +R809 +R65 +R26 +R66 +R70 +R64 +R83 +R86 +L69 +R76 +R12 +L52 +R977 +R85 +R2 +L70 +R39 +R31 +L95 +R95 +L5 +L95 +R9 +L626 +L83 +R48 +L987 +R39 +L31 +L559 +L96 +R14 +L28 +L668 +L92 +R6 +L72 +L74 +R24 +R76 +R46 +R554 +R92 +R47 +L39 +R90 +R651 +R38 +L79 +R6 +R94 +R981 +L72 +R91 +L897 +L85 +R47 +L60 +R21 +L86 +L40 +R67 +L367 +L81 +L31 +L72 +L16 +L173 +R80 +L947 +R74 +L34 +L109 +L91 +R54 +L54 +L90 +L63 +R253 +L20 +R10 +L70 +R52 +R82 +L66 +R29 +L312 +R41 +L98 +L7 +R59 +L80 +R52 +L61 +L20 +R9 +R77 +R373 +L50 +L63 +R87 +L24 +R580 +L28 +R48 +L41 +R18 +L77 +R105 +R95 +R48 +R50 +L66 +L32 +R77 +L92 +L33 +L52 +R28 +L71 +R23 +L16 +L45 +R59 +L738 +L373 +R18 +R15 +L48 +R74 +R65 +L860 +R69 +R86 +R43 +R29 +R823 +R19 +L25 +L70 +L205 +R11 +L617 +L20 +L31 +R87 +R72 +L69 +R59 +L8 +L93 +L91 +L492 +L28 +R68 +L48 +L27 +L86 +L53 +L79 +R734 +L84 +L53 +L68 +L14 +L18 +R48 +R90 +R10 +R32 +L32 +L28 +R536 +R65 +R32 +L19 +L86 +R52 +L912 +L24 +L2 +R936 +L66 +R16 +L33 +L88 +L79 +L83 +R919 +L722 +R86 +R10 +L14 +R58 +R14 +L968 +L49 +L5 +R54 +R33 +R67 +R64 +L49 +R89 +L63 +L43 +R62 +R28 +R69 +L147 +R50 +R11 +R64 +L85 +L50 +R91 +L91 +R97 +L28 +R51 +L40 +R78 +R43 +L581 +L17 +L48 +L94 +L95 +R323 +L89 +L72 +R80 +L44 +L22 +R58 +L74 +L28 +L66 +R368 +L33 +R91 +L58 +R72 +R51 +L523 +L91 +L9 +L34 +L19 +R68 +L15 +R38 +L38 +L730 +L70 +L332 +R658 +R31 +R43 +R23 +R457 +L880 +R13 +L713 +R24 +L25 +L399 +R15 +R85 +R74 +R26 +L32 +L68 +L54 +L110 +R64 +L91 +R691 +R18 +L78 +R60 +R673 +R27 +L785 +L13 +L90 +R620 +R36 +L82 +R14 +L79 +R1 +L20 +L330 +R26 +L98 +R4 +R89 +R23 +R84 +L117 +L93 +R10 +L77 +R90 +L14 +R69 +L468 +R220 +R80 +L46 +L88 +L38 +R672 +L745 +L39 +R84 +L8 +R22 +L740 +L74 +L52 +L66 +L82 +R15 +L11 +R27 +L21 +R90 +R91 +R312 +L401 +L2 +R422 +R78 +R550 +L50 +L61 +L769 +R30 +R92 +L92 +R152 +L67 +R92 +R86 +L99 +L22 +L81 +R55 +L16 +R26 +R74 +L29 +R58 +L61 +L15 +R72 +L725 +R96 +L216 +R79 +L91 +L430 +R16 +R746 +R51 +L51 +L82 +L4 +R86 +R92 +R8 +R19 +R184 +R97 +R75 +L981 +L38 +L56 +R15 +R87 +R98 +R210 +L36 +R67 +L76 +L865 +R76 +R22 +R2 +R98 +R49 +L613 +L65 +L69 +L25 +L75 +R54 +L54 +L949 +R49 +R69 +L69 +R6 +R894 +L42 +L58 +L38 +R42 +R896 +L14 +L86 +L34 +L531 +L35 +L76 +R208 +L582 +R61 +R60 +L57 +R86 +L99 +R87 +R45 +L18 +R90 +R95 +L51 +L49 +L647 +R20 +L73 +R41 +L65 +R16 +R608 +L2 +L98 +L32 +L668 +L14 +R29 +R24 +R967 +R62 +L95 +L49 +L46 +L45 +L48 +R29 +R455 +L63 +R494 +L668 +L32 +L55 +R61 +R86 +L92 +R807 +R58 +L65 +L21 +R10 +L7 +R318 +L65 +L723 +L84 +R91 +L63 +R144 +R43 +R99 +R458 +L21 +L62 +L98 +L52 +R297 +R95 +L40 +R207 +R74 +L895 +L5 +L802 +R67 +R35 +L71 +R35 +R36 +L40 +L11 +R51 +R69 +R93 +R38 +R61 +R39 +L24 +L76 +L48 +L352 +L67 +L233 +R37 +R92 +R40 +R31 +R69 +L64 +L5 +R379 +L39 +L53 +R13 +L7 +L93 +R42 +L47 +L95 +R37 +R21 +R49 +L7 +R50 +R50 +R785 +L85 +L17 +L618 +L585 +L59 +R3 +L62 +R1 +R35 +L25 +R81 +R46 +R13 +L76 +L47 +L90 +L59 +L11 +R40 +R30 +L19 +L99 +L94 +L98 +R10 +R89 +L693 +L34 +L57 +R7 +R88 +L518 +L26 +L821 +R965 +L67 +L33 +L704 +L84 +R867 +R121 +R11 +L63 +R258 +R94 +R28 +L12 +L16 +L84 +R59 +R29 +L4 +R68 +L68 +R551 +L97 +L10 +R80 +R76 +L19 +R560 +L41 +R232 +L221 +L701 +L89 +R97 +L83 +L35 +L11 +L89 +R971 +L86 +R8 +L93 +L162 +R19 +R82 +L16 +L23 +R10 +L785 +L25 +L31 +R511 +R32 +L60 +R48 +R12 +R88 +L27 +R60 +L71 +L896 +L2 +L50 +L714 +R44 +R39 +R650 +L7 +L26 +R85 +R15 +L85 +R588 +L3 +R46 +L46 +L99 +R139 +L421 +R49 +R32 +L417 +R17 +R543 +R57 +L81 +R581 +R71 +R80 +L451 +L81 +L19 +L25 +L65 +R7 +L217 +R10 +R38 +R791 +L39 +R22 +L438 +R25 +R2 +L362 +R51 +R125 +R47 +L72 +L46 +R9 +R74 +L49 +L38 +R10 +R27 +L87 +R18 +R10 +L57 +L871 +L449 +R58 +L93 +L16 +L74 +R555 +R19 +R1 +R935 +L143 +R307 +R8 +R99 +L9 +R538 +L421 +R213 +L972 +L56 +L87 +R87 +L52 +L48 +R9 +R2 +R2 +L13 +R69 +R774 +R94 +R70 +R93 +R44 +L44 +L53 +R753 +R25 +L25 +L396 +L52 +R311 +L93 +L70 +L18 +R518 +R56 +R44 +L555 +R35 +L79 +L27 +R53 +R7 +R99 +R89 +R78 +R217 +L17 +L5 +R110 +L205 +L55 +R49 +R6 +R723 +L23 +R760 +R303 +L63 +L4 +R653 +R459 +R765 +R94 +R33 +L1 +R46 +R15 +L805 +L321 +L81 +L53 +L11 +L21 +R32 +R14 +R608 +R78 +R8 +R210 +L639 +L17 +R38 +L48 +L99 +R952 +L47 +R53 +L75 +L252 +L70 +R58 +R28 +L190 +R90 +R60 +L288 +L72 +L41 +R50 +L809 +R80 +L394 +L564 +R78 +R226 +L98 +L491 +R59 +L96 +R494 +L206 +L705 +R947 +L580 +R83 +R71 +L5 +R92 +R68 +L69 +R10 +R86 +R269 +R775 +R79 +R10 +L56 +L85 +L78 +R25 +R94 +R47 +L666 +R66 +R51 +R98 +L15 +R308 +L89 +L1 +L46 +R28 +R24 +L24 +R239 +R27 +R53 +R81 +R47 +R398 +R81 +R38 +L64 +R25 +L51 +R27 +L1 +L90 +R76 +L34 +R12 +L148 +R772 +L188 +R3 +R997 +R19 +L19 +R44 +R16 +L60 +L53 +L747 +R81 +L81 +R87 +L451 +L854 +R27 +L639 +L70 +R54 +R323 +R19 +L196 +R74 +R52 +R15 +L49 +L27 +R741 +R94 +L643 +R43 +L885 +L97 +R9 +L412 +R85 +R508 +R8 +L66 +L76 +R26 +R95 +R38 +L41 +R8 +L51 +R75 +L98 +L126 +R21 +L21 +L30 +R30 +L90 +L10 +L49 +L49 +L2 +L54 +L46 +R45 +L90 +R345 +L26 +R26 +R381 +L13 +L48 +R880 +R66 +R238 +R96 +L713 +L733 +L454 +R26 +L26 +R308 +L77 +R69 +L59 +R93 +L34 +L83 +L35 +L48 +R20 +R417 +L659 +L17 +L95 +R3 +R95 +R310 +L16 +L320 +R99 +R29 +L72 +R82 +L162 +L404 +L79 +L977 +L588 +R805 +R595 +L95 +R15 +R80 +R357 +L57 +R28 +L49 +R3 +L55 +L27 +L23 +L48 +R64 +L93 +L58 +R58 +L7 +L97 +L745 +L51 +L84 +L41 +L39 +R64 +L61 +L239 +L35 +L65 +L54 +L79 +L67 +R99 +R62 +L455 +R693 +L67 +L432 +L85 +R685 +L50 +R25 +L90 +L18 +R76 +L343 +L12 +R70 +L5 +L753 +R10 +R390 +L21 +L77 +L2 +R219 +L924 +L95 +R12 +R88 +L9 +L91 +R47 +L16 +R32 +L53 +L41 +L7 +R27 +L35 +L15 +L73 +R97 +L29 +L61 +R50 +R77 +R91 +R91 +R118 +R91 +L403 +R65 +L24 +R14 +L75 +R32 +R34 +L25 +L82 +R47 +R26 +L57 +R276 +R76 +L23 +L72 +L56 +L87 +R43 +R425 +L99 +R91 +R83 +R54 +L57 +L84 +R61 +R26 +R33 +L806 +R1 +L28 +L63 +R53 +L75 +R85 +L44 +L17 +L93 +L46 +L37 +L615 +R33 +R24 +R95 +L376 +L98 +R74 +R9 +R96 +R303 +R92 +L75 +L8 +R83 +R11 +L67 +L11 +R67 +R56 +R59 +R85 +L99 +L14 +R453 +R83 +R82 +R810 +R85 +L74 +R72 +L94 +R96 +R53 +L53 +L79 +L73 +R752 +L80 +R85 +R43 +R55 +R97 +R35 +R51 +R870 +L56 +L33 +R81 +L948 +L95 +R395 +R643 +L543 +R4 +L701 +R50 +L813 +L10 +R370 +R48 +L848 +R94 +R51 +R6 +R201 +R48 +L56 +R156 +L36 +R86 +L13 +R27 +R36 +L113 +R3 +R10 +L29 +R37 +L822 +R14 +L33 +R41 +R22 +R938 +L17 +L91 +R66 +L39 +R54 +R86 +R15 +R895 +R863 +L469 +L16 +L50 +R24 +L61 +R70 +L898 +R33 +R554 +L17 +L78 +L60 +R68 +R90 +R6 +R37 +L33 +R56 +R44 +R72 +L87 +L74 +R89 +L34 +L566 +R19 +L6 +L62 +L51 +L37 +R55 +L10 +R30 +L74 +R53 +R76 +R73 +R591 +L30 +L27 +L13 +L87 +L697 +R92 +R5 +R66 +R34 +L39 +R39 +R94 +R66 +R40 +L78 +L163 +R720 +L921 +L89 +L69 +L83 +L47 +L86 +L4 +R23 +R6 +L9 +R49 +L67 +L98 +L7 +L77 +R10 +R637 +L52 +L432 +R37 +L14 +L786 +L29 +L71 +R54 +R48 +L86 +R56 +R28 +L19 +R26 +L788 +L19 +L25 +R81 +L29 +L7 +L20 +R26 +L71 +R47 +R86 +L88 +R55 +L310 +R55 +L19 +L8 +L92 +L80 +L39 +R55 +L89 +L65 +R37 +L70 +R32 +R9 +R29 +L325 +L75 +L17 +L483 +L32 +L68 +R1 +L81 +L20 +L99 +R15 +L16 +R58 +R880 +R89 +R173 +L660 +R56 +R4 +R47 +R79 +L757 +R22 +L596 +R50 +L34 +L65 +R654 +R25 +R8 +L60 +L56 +L62 +R95 +L92 +R42 +L97 +L93 +L957 +L626 +L27 +R48 +R21 +L69 +R777 +R23 +L43 +R443 +R621 +L121 +L70 +R75 +L69 +L636 +R19 +R96 +L6 +L78 +R978 +L851 +R42 +L17 +L36 +R36 +L790 +R7 +R10 +L27 +R39 +L28 +L58 +R70 +L320 +R14 +L27 +R426 +L11 +L43 +L16 +L64 +L65 +L747 +R22 +L58 +L64 +L53 +R77 +L824 +R47 +L827 +R527 +R13 +L99 +L14 +R33 +L45 +R92 +R20 +L559 +L53 +R12 +L82 +L18 +L55 +R4 +R851 +R73 +R69 +L42 +R63 +R8 +R29 +R23 +L1 +R31 +R57 +L97 +L13 +R743 +R57 +L277 +R61 +L69 +R923 +R88 +R9 +R65 +R18 +L18 +R16 +L194 +L63 +L73 +L74 +L480 +L32 +R18 +L53 +R39 +L404 +R381 +R6 +R13 +L71 +R76 +R42 +R16 +L63 +R210 +L10 +L75 +R49 +L74 +R54 +R22 +L50 +L21 +R143 +R108 +R21 +L77 +L81 +R281 +R23 +R87 +L75 +L52 +R51 +R22 +L51 +L82 +L23 +R10 +L29 +R22 +R97 +L1 +L97 +R44 +L39 +R1 +L46 +L62 +L90 +R66 +R24 +R50 +R96 +R68 +L9 +R95 +L62 +L25 +L49 +L56 +L82 +R30 +L65 +L81 +L10 +L73 +L62 +L31 +R66 +R97 +R73 +L61 +R18 +L94 +R81 +R86 +L74 +R31 +L57 +L62 +L38 +L74 +R74 +R33 +R5 +L1 +R50 +R47 +R41 +R35 +L3 +R38 +R41 +L39 +L27 +R48 +L40 +R4 +R31 +R48 +R12 +L45 +L27 +L26 +R38 +L43 +R23 +R12 +L21 +R34 +L18 +R10 +R20 +L7 +L16 +L43 +L19 +L1 +L42 +L50 +L3 +L33 +L39 +L2 +L32 +L36 +R33 +L5 +L12 +R2 +L14 +R10 +L13 +L35 +R47 \ No newline at end of file diff --git a/year_2025/src/day1.rs b/year_2025/src/day1.rs new file mode 100644 index 0000000..5dd4915 --- /dev/null +++ b/year_2025/src/day1.rs @@ -0,0 +1,84 @@ +pub fn execute() -> String { + let data = aoc_utils::read_lines("input/day1.txt"); + + let part1 = count_zeros(&data, false); + let part2 = count_zeros(&data, true); + + format!("{} {}", part1, part2) +} + +fn count_zeros(data: &Vec, count_all: bool) -> i32 { + let mut current: i32 = 50; + let mut count = 0; + + for line in data { + let dir = line.chars().nth(0).unwrap(); + let steps = line[1..].parse::().unwrap(); + + if count_all { + count += steps / 100; + } + + let increment = match dir { + 'L' => -(steps % 100), + 'R' => steps % 100, + _ => panic!("Invalid direction: {}", dir), + }; + + let mut next = current + increment; + + if next > 99 { + next -= 100; + if count_all && next != 0 { + count += 1 + } + } + if next < 0 { + next += 100; + if count_all && current != 0 { + count += 1 + } + } + + if next == 0 && increment != 0 { + count += 1; + } + + current = next; + + assert!(current < 100 && current >= 0); + } + + count +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_example() { + let data = example(); + assert_eq!(count_zeros(&data, false), 3); + assert_eq!(count_zeros(&data, true), 6); + } + #[test] + fn test_mine() { + assert_eq!(execute(), "1139 6684"); + } + + fn example() -> Vec { + vec![ + String::from("L68"), + String::from("L30"), + String::from("R48"), + String::from("L5"), + String::from("R60"), + String::from("L55"), + String::from("L1"), + String::from("L99"), + String::from("R14"), + String::from("L82"), + ] + } +} diff --git a/year_2025/src/main.rs b/year_2025/src/main.rs new file mode 100644 index 0000000..21b7235 --- /dev/null +++ b/year_2025/src/main.rs @@ -0,0 +1,5 @@ +mod day1; + +fn main() { + println!("Day 1: {}", day1::execute()); +}