From abbc9560bd6fd0bff70e8e7a8b413faa6d7f1646 Mon Sep 17 00:00:00 2001 From: alex <> Date: Mon, 1 Dec 2025 13:21:27 +0100 Subject: [PATCH] day01 + folder setup --- .gitignore | 3 + Cargo.lock | 7 + Cargo.toml | 6 + input/day01.txt | 4493 +++++++++++++++++++++++++++++++++++++++++++++++ src/day01.rs | 90 + src/main.rs | 27 + 6 files changed, 4626 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 input/day01.txt create mode 100644 src/day01.rs create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e337bb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/target +.cookie +html/ diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..27cb306 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aoc_2025" +version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..2aba261 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "aoc_2025" +version = "0.1.0" +edition = "2021" + +[dependencies] diff --git a/input/day01.txt b/input/day01.txt new file mode 100644 index 0000000..a3b31f6 --- /dev/null +++ b/input/day01.txt @@ -0,0 +1,4493 @@ +L1 +L8 +R35 +L50 +R12 +R34 +L25 +R37 +L29 +L16 +R48 +R43 +L5 +L16 +L23 +L1 +L46 +R40 +L47 +L34 +L21 +R36 +R48 +L19 +L12 +L50 +L15 +L30 +R10 +L30 +R6 +L9 +L15 +L14 +L22 +L35 +R28 +L46 +R2 +L22 +L34 +R8 +L20 +R15 +L23 +L46 +R12 +R2 +L43 +L59 +L82 +L18 +L42 +L17 +L81 +L69 +R20 +R61 +L72 +R27 +R5 +L28 +R95 +R1 +L63 +R63 +R10 +L10 +L30 +L78 +R5 +R46 +R15 +R64 +L93 +R97 +R3 +R71 +R17 +R54 +L13 +L58 +R66 +R87 +L23 +R67 +L97 +R51 +L64 +R62 +R5 +R89 +L43 +L82 +L52 +R22 +L88 +L55 +R71 +R88 +L58 +L5 +L62 +R29 +L465 +L420 +R602 +L550 +R56 +L63 +R90 +L58 +L238 +L62 +L67 +R21 +L11 +L61 +R18 +R25 +R249 +R726 +L68 +L754 +L507 +L44 +R73 +R30 +L30 +R52 +R4 +R41 +R83 +L80 +R11 +L62 +L49 +R60 +L464 +L46 +R30 +L75 +R375 +L80 +R60 +R770 +L30 +R63 +L63 +R98 +L98 +L52 +R90 +R7 +L95 +L15 +L93 +L659 +R17 +L689 +L56 +R45 +R87 +R3 +R10 +R667 +R81 +R5 +R47 +R29 +R571 +R658 +R695 +L30 +L23 +L30 +R264 +L91 +R57 +L51 +L49 +L97 +R715 +L58 +L82 +L23 +L62 +L92 +L1 +L12 +R96 +L884 +R24 +R24 +R43 +R733 +R76 +R86 +R35 +L13 +L8 +R10 +R90 +L447 +L97 +R944 +L27 +R527 +R11 +L77 +L57 +L97 +R89 +L8 +R84 +R55 +L684 +L30 +L86 +R43 +L91 +L52 +R51 +L777 +R525 +L872 +L72 +L55 +L10 +R70 +L60 +R164 +R85 +R53 +L102 +L278 +L22 +L73 +L21 +L69 +R36 +R83 +R206 +R38 +L56 +L44 +R34 +R29 +R1 +R59 +R77 +L68 +L32 +R34 +R66 +R31 +L92 +L39 +R949 +L523 +R47 +L2 +R17 +L298 +R10 +R589 +R11 +L50 +L37 +R87 +R245 +R64 +L77 +R409 +R59 +R330 +R70 +R60 +R56 +L16 +L72 +L98 +R50 +R376 +L56 +L93 +R83 +R83 +L69 +R8 +R888 +L24 +L713 +R7 +R10 +L91 +R258 +R853 +L831 +L31 +R6 +R256 +L96 +L54 +L73 +L18 +R76 +R70 +L98 +R256 +L63 +L85 +L15 +L86 +R86 +R86 +R26 +L612 +L93 +L678 +R320 +R10 +R59 +R229 +L16 +L31 +L520 +L34 +R15 +R839 +L715 +R6 +R209 +R344 +R19 +R92 +R45 +R24 +R76 +L23 +R23 +R31 +L31 +R36 +R64 +R12 +L33 +L73 +L28 +R622 +R21 +L62 +L59 +L309 +R12 +L76 +L76 +L57 +L25 +R31 +L25 +L18 +L57 +L36 +L665 +L99 +R945 +L11 +R19 +L53 +R53 +L853 +R91 +L91 +R15 +L15 +L83 +L92 +L25 +L77 +L23 +R254 +L54 +R73 +L27 +R53 +L79 +L20 +L638 +R38 +L86 +L14 +R186 +L10 +L847 +L469 +R39 +R46 +R55 +R225 +L888 +R63 +L27 +L573 +L82 +L47 +R819 +L422 +R52 +L70 +L150 +L10 +L90 +R77 +L77 +R22 +L22 +R59 +R76 +L35 +R834 +L475 +R41 +L170 +R74 +L49 +L99 +R44 +L42 +R24 +R18 +R53 +R33 +R14 +R98 +R54 +L52 +L69 +L15 +R352 +L441 +L680 +L89 +R3 +L961 +R83 +L66 +R483 +R34 +R66 +R937 +L37 +R369 +L653 +L89 +L29 +R135 +L64 +R90 +R11 +L950 +L80 +R60 +L786 +R98 +L412 +R44 +R326 +R4 +R8 +L52 +R10 +R62 +R98 +R65 +L475 +R33 +R57 +L80 +R88 +R49 +L87 +L22 +L218 +L10 +L24 +L76 +L74 +R74 +R18 +R13 +L28 +L79 +L423 +R99 +R77 +L184 +L877 +L49 +R14 +L93 +R106 +L12 +R818 +L6 +L64 +L80 +R40 +R10 +L505 +R5 +L27 +R27 +R33 +L37 +R72 +L77 +L91 +L174 +L26 +L843 +L77 +L944 +R64 +L11 +R97 +L115 +L59 +R22 +R266 +L77 +R58 +R104 +L85 +R23 +R577 +R19 +L18 +R99 +L87 +R36 +L949 +R713 +L47 +L66 +L9 +L991 +R77 +L458 +R756 +L21 +R117 +R53 +L24 +L27 +L99 +L74 +L40 +R74 +L786 +L42 +R39 +L33 +R50 +R96 +R31 +R82 +L15 +L54 +R96 +L98 +L517 +R32 +R34 +R7 +L657 +R1 +L3 +L97 +R76 +L88 +R609 +R54 +L51 +L857 +L45 +L69 +R71 +L687 +L525 +L88 +L7 +L18 +L21 +R390 +L15 +L29 +R46 +L67 +L199 +L6 +L74 +R930 +R61 +L65 +L880 +R64 +R690 +R92 +R8 +L873 +R1 +R972 +R85 +L859 +L80 +R57 +R61 +L92 +R29 +L1 +R66 +R34 +L73 +R25 +L52 +R79 +R54 +R32 +L213 +R48 +L349 +L52 +R1 +R86 +R88 +L33 +R67 +R45 +R66 +L19 +R752 +L22 +L30 +L292 +R56 +R36 +L12 +R11 +L84 +R85 +L46 +R6 +R14 +L74 +R66 +R76 +R91 +L733 +L73 +L327 +R2 +R78 +L79 +R16 +L35 +L447 +L35 +R97 +R63 +R140 +R645 +R326 +R29 +R31 +R37 +R32 +R44 +L60 +R55 +L39 +R65 +L45 +R48 +L525 +L729 +L1 +L13 +L35 +L865 +L5 +L95 +L28 +L72 +R86 +L47 +R61 +L74 +L3 +L63 +L46 +L70 +R56 +R68 +R632 +L32 +L68 +L21 +L581 +R36 +L97 +R6 +L91 +L652 +L66 +L980 +L54 +R35 +L75 +R10 +R787 +R743 +L81 +L15 +L4 +R53 +L853 +R36 +L96 +R60 +L12 +L24 +R15 +R721 +L13 +L87 +R21 +L21 +L59 +R58 +L66 +R13 +L46 +R96 +R4 +R33 +L41 +L96 +L96 +R195 +R5 +L62 +R75 +R37 +R78 +L65 +R96 +L59 +R515 +R33 +R852 +L91 +L18 +R95 +R14 +L14 +L46 +R60 +R12 +L912 +L91 +R201 +L210 +L570 +L30 +R112 +L12 +R13 +R87 +R77 +L377 +R254 +L54 +L57 +R457 +R939 +R161 +R14 +R86 +R31 +R762 +R207 +R739 +R269 +L8 +L59 +R29 +R10 +R35 +R81 +L44 +R73 +R75 +R12 +L12 +L924 +R24 +L91 +L89 +L4 +L16 +R968 +L68 +R33 +L657 +R85 +R89 +R450 +L99 +L1 +L552 +L76 +L72 +L77 +L485 +R85 +L23 +L12 +R392 +L80 +R61 +L89 +R88 +L21 +R95 +L454 +L36 +R256 +R75 +R90 +L21 +L44 +R95 +R523 +L667 +R8 +R41 +R974 +R40 +L86 +L655 +R27 +R123 +L97 +R38 +L70 +R6 +R97 +R904 +R34 +L55 +R68 +R815 +L93 +R30 +L67 +L33 +L16 +L44 +L71 +L14 +R45 +L7 +R39 +R475 +L31 +R108 +L203 +R619 +L19 +L66 +R31 +L46 +L15 +R61 +L46 +R66 +R6 +R19 +R555 +L83 +R37 +R27 +L334 +R607 +L19 +R7 +R58 +R80 +L26 +L80 +R80 +R51 +R843 +L60 +L34 +L19 +L37 +R32 +R66 +R58 +L48 +R548 +R77 +R23 +L83 +R97 +R16 +R72 +L64 +L38 +R90 +L190 +R657 +L57 +R74 +L74 +R42 +R63 +R90 +R43 +L15 +R77 +R45 +L20 +R75 +R238 +L38 +L47 +R92 +R51 +R11 +L91 +L216 +R598 +L98 +L63 +R74 +L146 +R65 +L27 +R30 +L33 +R73 +L27 +R12 +L41 +R29 +R54 +L491 +L18 +R9 +L57 +R169 +R614 +L26 +L41 +L18 +R41 +L882 +R41 +R59 +R43 +L57 +R38 +R76 +R69 +R331 +R87 +R63 +L277 +L73 +R47 +R60 +L71 +R56 +L29 +L230 +L33 +L2 +R9 +R32 +L39 +R14 +R86 +R57 +R30 +L5 +R845 +L927 +L92 +L8 +L72 +R40 +L8 +R61 +L72 +R51 +L83 +L17 +L9 +R9 +L22 +L78 +R95 +L70 +L462 +L63 +L10 +L4 +L508 +R22 +R83 +R517 +R610 +L10 +R985 +L85 +L87 +L332 +R19 +L537 +L63 +R21 +L821 +L97 +R74 +L50 +R26 +L253 +R14 +L58 +L58 +L65 +R15 +L1 +R30 +L69 +R92 +L509 +R8 +R1 +L76 +R17 +R59 +R210 +L59 +L51 +L88 +L183 +L29 +R88 +L756 +L56 +L24 +L52 +R76 +L76 +R74 +R88 +L36 +R74 +L90 +R18 +L28 +L82 +R10 +L93 +L35 +R85 +R80 +L94 +L671 +L62 +L19 +R81 +R43 +L46 +R208 +L35 +R30 +R20 +L70 +L39 +L11 +L53 +L47 +L90 +L91 +R481 +R50 +L54 +R604 +L19 +L981 +R98 +R602 +R353 +R79 +L91 +L570 +L53 +R382 +R44 +L474 +R88 +L58 +L67 +R50 +L94 +R263 +R73 +R69 +R6 +L55 +L89 +L461 +R80 +L24 +R24 +L75 +L35 +R935 +R28 +R670 +R2 +L51 +R182 +L97 +R32 +L66 +R55 +R945 +L60 +L45 +L39 +R488 +L36 +L15 +L502 +L307 +L38 +L46 +R167 +L97 +L72 +R29 +R73 +R23 +L23 +R817 +L5 +R888 +R5 +R48 +L83 +R94 +R26 +R11 +R31 +R68 +R99 +L998 +R755 +R335 +R9 +L58 +L42 +L45 +R4 +L46 +L37 +R71 +R383 +L73 +R43 +L50 +R89 +R80 +L819 +L46 +R46 +R42 +R91 +R67 +L10 +R12 +R928 +L62 +R32 +R50 +R17 +R93 +R73 +R67 +R55 +R50 +R95 +R24 +R76 +L94 +R8 +R86 +R47 +L171 +L62 +R70 +L863 +R79 +L53 +R19 +L42 +R51 +L75 +R93 +R7 +L805 +R5 +R69 +R56 +R69 +R8 +L2 +R539 +R161 +L51 +R19 +R31 +R48 +L47 +L54 +L546 +L93 +L425 +R50 +R68 +R69 +L69 +R55 +L66 +L89 +R58 +R913 +L39 +R42 +R26 +L27 +L30 +L76 +R18 +L385 +L36 +R36 +L56 +L859 +L85 +R859 +R58 +L649 +R32 +R37 +R94 +R69 +R7 +R93 +R46 +L46 +R85 +L569 +R9 +L460 +R25 +L90 +L92 +L8 +R53 +R47 +L796 +R96 +R99 +R21 +R280 +R59 +R91 +R392 +R58 +L82 +L21 +R39 +R83 +L10 +R91 +R56 +R66 +R99 +L42 +L96 +L83 +R65 +L65 +R87 +R72 +L48 +R49 +L19 +L22 +L20 +R95 +L286 +R92 +L99 +L462 +R15 +R46 +L69 +L31 +L19 +L677 +R141 +R855 +L99 +L53 +L48 +R81 +R11 +L75 +R50 +R98 +L65 +R35 +R13 +R24 +R38 +R90 +R912 +R12 +R376 +L24 +L80 +L55 +R1 +R50 +R85 +L77 +R817 +R11 +R872 +L4 +L28 +L65 +L69 +L17 +R83 +L31 +R63 +R68 +R568 +L30 +R62 +R99 +R322 +L721 +L33 +R59 +L96 +L61 +R31 +R98 +L64 +L68 +R988 +L54 +R83 +R286 +L4 +R35 +L8 +L785 +R887 +L81 +L634 +R29 +L108 +L55 +R78 +R69 +R752 +L544 +R74 +R26 +L28 +L72 +R228 +L28 +R335 +R31 +L41 +L25 +R78 +L121 +R543 +R9 +R91 +L1 +R60 +L80 +L79 +L177 +L76 +L13 +R66 +L441 +R911 +L498 +R28 +L24 +L14 +L52 +L632 +R82 +L60 +L37 +L63 +R70 +R30 +R68 +R9 +R407 +R16 +L886 +L47 +R468 +R806 +L65 +R97 +L70 +R40 +L43 +R28 +L982 +L646 +R98 +R53 +R90 +L78 +R447 +R86 +R4 +L70 +R99 +L29 +L84 +L16 +L318 +R68 +R93 +L34 +L52 +R452 +L9 +L19 +L42 +L39 +L29 +L71 +L274 +L26 +R41 +R20 +R72 +R91 +L98 +R174 +L1 +R787 +L86 +L42 +R42 +L49 +R49 +L54 +R375 +R79 +L407 +L93 +R50 +L24 +R74 +R61 +L6 +L56 +L352 +R632 +R21 +L58 +L32 +L39 +R29 +L99 +L11 +R10 +R44 +L18 +R74 +L24 +R60 +L38 +R2 +R72 +R862 +L51 +L94 +L26 +L62 +R32 +L233 +L98 +L41 +L7 +L12 +R77 +L19 +R25 +R3 +L12 +L41 +L88 +R13 +L95 +R95 +R53 +L15 +R735 +L73 +R948 +R98 +L186 +L36 +L824 +R28 +L49 +R854 +R15 +L22 +L26 +R27 +L66 +R21 +L82 +L98 +R55 +R67 +L34 +R703 +L20 +L644 +L56 +L56 +L80 +R763 +L128 +L72 +L754 +R54 +L31 +R531 +R616 +L19 +R3 +L26 +R36 +R90 +R32 +R68 +L26 +R526 +R1 +R99 +L3 +L768 +L29 +R44 +R79 +R77 +L51 +L844 +R95 +L4 +R13 +R81 +R10 +R44 +L36 +L57 +R49 +L44 +L64 +L88 +L4 +L24 +L84 +L33 +R913 +L72 +L363 +R46 +L77 +L806 +R85 +L85 +R14 +L114 +R51 +L73 +R86 +L20 +L47 +L97 +L52 +L62 +R56 +R58 +L82 +L55 +R905 +R32 +L16 +L84 +L27 +L68 +L5 +L15 +R1 +R80 +R34 +R257 +L62 +R12 +R70 +R882 +R43 +L828 +L52 +L22 +L38 +R638 +L62 +R59 +L97 +R43 +R112 +R45 +L525 +L14 +R1 +R38 +L53 +R818 +L65 +L91 +L8 +L2 +R1 +R86 +R14 +L30 +L57 +L51 +R38 +R1 +L1 +R4 +L43 +R80 +R95 +L686 +L46 +R96 +R89 +R26 +L13 +L47 +L55 +L87 +R87 +L2 +L79 +R381 +L30 +R30 +R258 +R58 +R84 +L45 +R16 +R29 +R49 +R33 +R64 +L928 +R482 +R84 +L505 +R21 +R97 +L97 +R97 +R98 +R696 +L94 +L730 +L94 +R27 +L29 +R64 +R71 +L6 +L74 +R68 +L51 +R384 +R73 +R478 +R22 +L85 +R90 +R95 +R65 +L178 +L645 +L742 +L33 +L67 +R532 +L23 +L678 +R69 +L69 +L991 +R60 +L16 +R16 +L12 +R25 +R10 +R91 +R386 +L259 +R94 +R465 +R4 +L749 +L53 +L55 +R75 +R71 +R1 +L26 +R764 +R20 +R85 +R864 +R104 +R34 +R99 +R69 +R94 +R21 +L18 +R83 +L87 +R48 +L48 +L59 +R87 +L436 +R62 +L797 +L57 +R99 +R42 +R93 +R21 +R1 +R65 +R79 +R680 +L11 +R124 +R27 +R59 +R221 +R14 +R68 +R13 +R84 +R96 +R25 +L78 +R46 +L34 +R66 +R70 +R61 +L163 +R461 +R171 +R66 +L96 +L42 +L28 +L52 +L48 +R16 +L65 +R549 +R31 +R945 +R224 +R438 +L938 +R69 +L52 +R883 +R392 +L92 +R5 +L166 +R461 +R785 +R430 +L715 +L275 +L25 +R81 +L18 +R719 +L82 +L10 +R74 +L47 +R91 +L69 +L42 +L397 +L96 +R996 +R84 +R52 +R64 +R35 +R60 +L195 +L818 +R418 +R620 +L266 +L23 +L31 +L45 +R45 +R77 +R23 +L678 +R639 +R82 +L43 +L4 +R71 +L67 +L84 +L16 +L485 +R85 +R15 +L16 +L96 +L66 +R54 +R28 +R154 +R48 +L52 +R167 +R30 +L7 +L59 +L85 +L15 +R78 +L72 +L106 +R21 +L75 +R54 +L41 +R93 +R784 +L36 +R39 +L97 +L479 +L63 +L49 +L18 +R84 +L217 +R817 +L94 +R7 +L30 +R610 +L10 +L84 +L51 +R81 +R54 +R45 +L42 +L62 +R86 +R476 +R97 +L58 +L3 +L339 +R34 +L64 +R30 +L35 +R96 +R94 +L63 +R789 +R11 +L92 +L62 +R39 +R53 +R13 +L43 +L5 +R84 +L79 +R53 +L76 +L77 +L745 +L76 +L52 +L39 +R31 +R179 +L998 +R43 +L43 +R19 +L74 +L145 +L538 +R83 +R86 +R87 +L96 +R78 +R760 +L46 +L414 +R43 +L321 +L522 +L76 +L16 +L87 +R79 +L10 +R377 +L67 +R88 +L88 +L631 +R118 +L6 +R307 +R146 +R730 +L51 +R46 +L88 +L37 +L62 +L6 +R20 +L86 +L95 +L684 +R88 +R91 +L99 +L101 +R39 +R34 +L548 +R58 +L83 +L55 +R655 +R30 +L97 +R36 +L271 +L353 +R89 +L34 +L65 +L135 +L732 +L80 +R141 +R576 +R64 +R887 +R80 +L44 +R8 +L78 +R55 +R30 +R828 +R924 +R41 +L628 +R41 +L13 +L91 +L9 +L81 +R384 +L71 +L33 +L3 +R7 +R74 +L40 +R352 +R1 +R10 +R68 +L62 +L67 +R56 +L44 +L81 +R6 +L2 +R72 +R82 +L928 +L44 +L17 +R71 +R119 +L83 +R73 +L119 +L41 +R93 +R80 +R68 +L287 +R187 +R63 +R370 +L33 +L81 +L60 +R41 +R37 +L59 +R3 +R19 +R49 +L3 +L711 +R51 +R314 +L703 +L97 +R52 +L36 +L57 +R611 +R30 +R66 +R34 +L80 +R84 +R13 +L373 +L28 +R13 +L29 +R364 +L11 +R68 +R14 +R444 +R111 +R10 +R86 +L46 +L26 +L73 +R32 +R94 +R65 +R65 +L97 +R1 +R63 +L42 +R98 +R756 +R24 +R17 +L78 +L17 +R78 +L72 +R28 +R41 +L72 +R39 +R36 +L41 +R2 +L38 +L64 +R641 +R14 +R29 +R57 +L34 +L362 +L4 +R62 +R48 +R90 +L38 +R16 +R322 +L25 +L478 +L272 +L42 +R64 +L47 +L32 +R47 +R85 +L538 +L62 +L55 +L74 +L771 +R378 +R44 +L21 +L10 +R9 +L56 +R876 +R80 +R18 +L18 +R772 +R28 +R78 +R33 +L31 +R190 +R41 +L11 +R47 +L76 +R47 +L49 +L30 +L74 +R46 +R7 +R7 +R41 +R77 +L43 +L42 +L1 +L522 +R50 +L368 +R31 +R372 +L520 +R53 +L53 +R731 +R85 +L70 +R354 +L428 +R28 +R79 +R147 +R16 +R73 +R85 +R15 +L18 +L97 +R395 +R72 +R612 +L779 +R90 +L13 +L16 +L77 +R16 +R35 +R44 +L26 +R5 +L13 +L45 +L34 +R34 +R775 +R19 +R6 +L94 +L32 +L501 +R127 +R134 +L734 +R4 +R983 +L87 +R41 +R79 +L36 +L784 +R92 +R8 +L45 +L55 +R89 +R789 +L78 +L45 +R558 +L54 +L59 +L11 +L89 +L31 +R38 +R64 +L71 +L55 +R55 +L11 +R11 +R55 +R45 +R69 +R31 +R30 +R776 +L71 +L22 +L33 +L80 +L94 +R294 +R394 +R6 +L62 +R18 +L2 +R63 +L17 +R66 +L36 +L34 +R33 +R55 +R16 +L75 +L30 +L95 +L6 +R404 +L98 +L601 +L90 +L9 +R572 +R51 +R95 +L44 +R626 +R67 +R133 +L30 +R630 +R20 +R80 +R59 +R41 +R91 +L1 +L36 +R569 +L98 +R40 +R98 +R61 +L19 +L31 +R595 +L69 +R10 +L346 +L280 +R16 +L474 +R827 +L40 +R25 +L61 +R35 +R63 +R10 +R402 +R8 +R48 +L467 +R39 +L54 +L67 +L48 +L29 +R405 +R85 +R40 +R44 +R41 +L32 +L410 +R123 +R283 +L54 +L42 +R209 +L9 +L80 +R59 +R21 +R15 +L59 +R12 +L85 +L34 +L49 +R47 +L47 +R831 +L31 +R28 +L91 +L60 +R23 +R41 +R59 +L94 +R60 +R34 +L86 +R87 +L80 +L938 +L52 +R47 +L96 +R18 +L505 +L122 +R27 +R75 +R25 +L14 +L86 +L401 +R2 +L1 +L93 +R46 +R47 +R602 +R279 +L30 +R225 +R81 +L57 +R433 +R415 +L48 +R59 +R32 +R26 +L16 +R24 +R25 +L23 +R273 +R4 +L28 +R24 +L335 +L55 +L96 +R86 +R863 +R56 +L75 +L64 +R55 +L81 +L373 +L81 +R6 +R94 +R153 +L96 +L201 +L83 +L98 +L775 +L22 +L94 +R91 +R92 +R33 +L26 +R57 +R3 +L316 +R92 +R90 +R31 +L31 +R69 +R31 +L1 +L997 +L13 +L94 +L4 +R9 +R830 +R170 +L45 +R45 +L43 +R43 +L73 +R5 +L56 +L74 +L66 +L36 +R48 +L16 +L88 +R56 +L90 +R65 +L38 +R61 +R2 +L56 +L528 +L16 +R48 +L60 +L8 +R32 +L712 +L63 +L38 +R16 +L5 +L97 +L13 +R60 +L304 +L51 +R95 +L194 +L38 +R46 +L41 +L59 +L14 +L17 +R12 +L95 +R58 +L80 +L29 +L49 +L87 +R87 +R29 +R88 +R443 +R98 +L57 +L1 +L79 +L71 +L92 +L43 +R52 +R89 +R744 +L918 +R8 +R37 +R160 +R74 +R73 +L634 +L14 +R14 +L74 +R74 +R18 +R31 +R85 +L44 +L90 +L678 +L84 +L95 +L56 +R13 +L344 +L37 +R82 +R71 +R37 +R91 +L87 +R87 +R13 +L13 +L24 +R160 +L636 +L30 +L70 +L6 +R97 +L591 +R11 +L41 +L11 +L55 +R596 +R13 +L13 +R85 +L67 +R820 +L38 +L43 +R43 +L198 +R87 +R11 +L717 +R59 +R47 +L43 +L34 +R88 +R13 +L905 +R358 +L66 +R44 +R56 +R64 +L50 +R86 +L41 +R9 +R433 +R3 +R20 +L15 +R30 +R76 +L78 +L71 +L16 +R35 +R335 +L57 +R42 +R22 +R23 +L74 +R20 +R761 +R43 +R81 +L91 +L90 +L42 +L58 +R61 +R48 +L9 +L77 +L523 +R53 +L387 +R77 +L26 +R23 +R60 +L17 +R72 +L11 +L28 +L40 +R294 +L70 +L24 +R24 +R77 +R523 +L75 +R375 +L36 +R55 +L937 +R21 +R137 +R53 +L86 +R93 +L219 +R19 +R37 +R6 +R257 +L748 +R45 +R55 +L64 +L88 +R63 +L18 +R55 +L27 +L1 +L72 +L50 +R25 +L63 +L12 +L81 +L19 +L91 +L746 +R81 +L49 +R84 +L52 +R63 +L48 +R18 +R2 +R338 +R428 +R74 +L502 +R54 +R46 +R43 +R57 +L6 +L49 +R633 +R56 +L21 +L66 +R81 +R92 +R77 +R3 +L20 +R94 +L74 +L38 +R38 +L93 +L534 +L84 +R996 +R15 +R873 +L94 +R45 +L524 +L82 +L218 +L761 +L89 +L92 +L24 +R59 +R86 +L9 +L70 +L72 +L110 +L64 +R546 +R2 +L2 +L52 +R455 +L3 +L911 +R3 +L53 +R102 +R24 +R11 +L78 +R81 +R21 +R122 +R74 +R18 +L714 +R14 +R65 +R21 +R905 +R93 +L80 +L4 +R86 +R84 +R16 +L57 +L83 +R37 +R6 +L39 +L73 +L93 +R702 +L25 +R31 +L606 +L40 +R40 +L89 +L90 +L996 +R76 +R99 +L94 +R94 +L39 +L14 +L78 +L69 +L68 +L932 +R31 +R85 +L911 +R58 +R48 +L13 +R37 +R65 +L61 +R61 +R738 +R80 +L53 +R135 +L65 +L88 +L47 +L59 +R19 +L80 +R20 +L57 +L43 +L56 +R48 +L96 +L96 +R369 +L69 +L6 +R36 +L54 +L476 +R34 +R66 +L98 +L93 +R18 +R73 +L868 +R68 +L1 +L37 +L24 +L51 +R13 +R963 +R64 +R838 +L79 +L586 +R73 +R327 +R46 +L46 +L19 +L81 +R19 +L78 +R459 +R225 +L99 +L28 +R2 +R19 +R1 +R683 +R67 +R59 +R25 +L92 +L62 +R90 +R52 +R58 +L80 +L20 +L10 +L19 +L73 +L98 +L10 +L90 +R927 +L96 +L31 +L56 +L20 +R17 +R59 +L813 +L87 +R254 +L81 +L673 +R43 +R857 +R8 +L15 +R5 +R173 +L46 +R75 +R47 +R53 +R61 +L40 +R79 +R17 +L7 +R90 +L15 +L48 +R29 +R434 +L64 +R64 +R92 +R40 +L99 +L14 +R29 +L47 +L70 +R69 +L89 +L95 +R884 +R219 +L19 +L97 +R23 +L64 +L516 +L26 +R98 +R82 +L23 +L19 +L52 +L56 +L33 +L17 +R99 +R40 +R88 +L99 +L28 +R1 +R99 +L55 +L45 +R28 +R54 +R13 +R5 +L72 +L37 +L91 +R61 +R60 +L521 +L530 +R30 +R87 +R68 +R86 +L51 +L87 +L3 +R705 +L27 +L24 +L54 +L53 +R53 +R561 +R91 +R18 +R45 +R485 +L82 +R33 +L51 +L74 +L70 +L81 +R38 +L13 +L70 +L270 +R93 +R47 +L79 +L819 +L2 +L6 +L742 +R48 +L3 +L597 +L15 +R398 +L83 +L77 +R77 +L18 +L3 +R37 +R46 +L18 +L51 +R321 +L110 +R67 +R16 +R18 +R96 +R471 +R810 +L10 +R86 +L747 +L11 +L92 +L42 +R78 +R756 +R80 +L80 +L88 +R97 +R76 +R255 +R991 +L31 +L58 +L742 +R76 +R47 +L341 +L82 +L30 +L24 +R35 +L19 +R52 +R86 +L76 +R89 +L65 +R2 +R50 +L31 +L67 +R98 +R7 +R75 +L3 +L993 +R14 +R50 +L50 +R24 +L635 +R62 +R71 +R48 +L390 +L80 +R53 +L53 +R62 +L62 +R61 +L69 +L41 +R31 +L87 +L48 +L65 +L8 +L74 +R773 +L52 +R984 +R86 +R88 +L85 +L78 +R57 +L95 +R22 +R39 +L70 +R47 +L65 +L69 +L55 +L48 +R8 +L30 +R88 +L40 +R62 +L58 +L9 +L87 +R87 +R60 +L38 +L99 +R77 +L252 +R61 +L9 +L95 +R95 +L392 +R92 +R79 +R33 +L78 +L34 +R183 +R78 +R39 +R18 +R53 +L71 +L244 +L26 +L6 +R766 +R10 +L738 +R39 +L49 +L51 +R28 +L2 +R922 +R51 +L356 +L382 +R38 +L77 +R26 +L37 +R27 +R61 +R219 +R49 +L642 +R10 +L11 +R48 +L73 +L87 +R833 +R79 +L25 +L16 +L25 +L59 +R91 +L91 +R69 +L25 +L91 +R39 +R908 +L17 +L83 +L50 +R28 +R22 +L33 +R33 +R17 +R48 +R786 +R51 +L493 +R91 +R90 +L29 +R103 +L653 +L71 +R22 +R76 +R62 +R77 +R70 +L47 +R531 +R89 +L20 +L542 +L272 +L12 +L74 +R24 +L78 +R54 +L997 +L96 +R93 +L95 +L83 +R78 +L635 +R35 +L95 +L14 +R9 +R47 +R53 +R579 +L70 +R801 +R53 +L865 +R702 +L40 +R88 +R13 +R639 +R57 +R9 +R531 +R130 +L27 +L74 +L26 +R256 +R66 +R78 +L60 +R28 +R52 +R80 +R91 +L14 +L80 +L56 +L250 +R3 +R136 +R884 +R71 +L45 +L110 +R1 +R70 +R94 +R13 +R92 +L85 +R79 +R406 +R93 +R34 +R74 +L45 +L56 +R682 +R28 +L10 +R37 +R163 +L68 +L29 +L50 +L31 +R78 +L393 +R403 +L10 +L49 +L5 +L84 +R89 +L535 +R84 +R177 +L80 +L75 +L16 +L685 +L26 +R299 +L97 +R851 +R20 +L68 +L80 +L8 +L12 +R859 +L59 +R58 +R30 +L550 +L38 +R90 +L90 +L5 +R89 +L50 +R688 +L26 +L96 +R80 +L72 +R992 +R27 +L80 +L13 +R36 +R30 +L56 +L44 +R80 +R20 +R23 +L23 +L98 +L2 +L75 +L38 +L45 +L13 +R71 +L78 +L22 +L86 +L15 +R31 +R944 +L30 +L8 +L642 +L94 +R987 +R12 +L99 +R43 +L42 +L1 +L9 +R88 +L86 +R795 +R94 +R21 +L3 +L12 +R328 +L80 +L336 +L17 +L288 +R554 +R33 +L225 +L57 +L72 +L28 +L1 +R206 +R816 +R37 +R42 +L55 +R93 +R24 +R73 +L35 +R42 +R83 +R13 +L19 +L60 +L59 +L81 +L74 +R755 +L92 +L38 +L98 +R31 +L17 +L44 +L2 +R69 +L38 +R54 +R975 +L28 +L72 +R89 +R11 +L458 +R81 +L23 +L60 +R60 +R44 +L35 +R57 +R74 +R60 +L263 +R63 +R82 +L39 +R71 +L93 +R679 +R49 +R51 +L893 +R97 +R396 +L70 +R70 +L456 +L97 +L54 +L793 +L2 +L24 +R26 +R54 +L19 +R65 +R2 +R98 +R83 +R317 +L556 +R74 +L18 +L883 +R75 +L92 +L23 +R12 +R93 +L37 +L245 +R52 +R647 +L598 +R32 +R15 +R54 +L72 +L81 +L30 +L119 +L72 +L996 +R35 +L967 +R22 +L82 +L874 +L77 +R711 +R60 +R50 +L10 +R77 +L277 +L41 +L84 +R80 +L83 +R941 +R811 +R76 +L23 +L96 +L44 +L37 +L32 +L89 +R16 +R5 +L17 +R77 +L60 +R49 +R51 +R460 +L55 +R16 +L21 +L85 +R85 +R84 +R97 +R15 +R8 +R96 +R74 +R26 +L15 +L83 +R91 +L88 +L39 +L66 +R899 +L48 +L51 +R306 +R92 +R2 +R68 +L68 +R73 +R27 +L49 +L444 +L35 +L51 +L52 +R31 +L70 +R69 +R1 +R59 +R41 +R34 +R57 +L14 +L594 +L69 +L345 +R31 +L175 +L40 +R15 +R21 +R986 +L52 +L55 +R85 +L617 +L63 +R406 +L11 +L48 +R966 +R33 +L164 +R235 +L48 +L16 +R42 +L18 +R15 +R93 +L90 +L319 +R852 +R67 +R86 +L586 +L554 +R54 +R1 +L2 +L60 +L33 +R43 +L449 +L35 +R446 +R28 +L11 +L1 +L27 +R74 +L68 +L6 +R84 +R16 +R3 +L72 +R41 +R65 +L43 +R163 +R53 +L17 +L93 +L66 +R97 +L47 +R81 +R335 +L30 +L47 +L96 +L27 +R92 +L34 +R42 +R58 +L58 +R1 +R99 +R16 +L41 +L575 +R72 +R12 +L78 +R284 +L217 +L73 +L94 +R294 +R9 +L960 +R51 +L20 +R20 +L4 +R6 +L29 +L35 +R62 +L24 +R69 +L45 +L56 +L77 +L11 +L86 +L96 +R26 +L660 +R63 +R22 +L763 +R767 +R10 +L106 +R41 +R526 +R473 +R367 +L85 +L695 +L299 +L82 +R21 +L94 +R94 +R99 +R1 +R393 +R45 +L98 +L40 +L98 +L406 +R304 +L572 +L482 +R32 +L78 +L12 +L288 +R84 +L41 +R78 +L479 +R18 +R10 +R52 +R51 +L73 +L60 +R16 +R547 +R27 +R39 +L592 +R386 +R32 +R554 +L48 +L69 +R224 +L39 +R716 +L29 +L97 +L52 +L55 +L28 +L372 +L12 +R553 +R14 +L96 +L60 +L2 +R19 +L72 +R49 +L93 +L199 +L83 +R383 +R52 +L53 +R276 +L986 +L785 +R66 +R771 +L10 +L32 +L31 +R97 +R34 +R13 +L60 +R47 +L594 +L16 +L90 +R69 +R631 +R38 +L35 +R97 +L803 +R196 +L707 +R340 +L26 +R60 +L926 +R66 +R613 +L33 +L6 +R92 +R65 +R69 +R292 +L92 +L96 +L4 +R186 +L22 +R36 +R289 +R11 +R67 +L89 +R29 +R743 +R50 +R196 +R4 +R39 +L39 +L55 +R73 +L3 +L16 +R22 +L97 +L18 +L6 +L4 +R4 +R43 +L43 +L33 +L13 +L854 +L37 +R14 +L77 +L80 +R707 +R60 +R13 +R28 +L28 +R27 +R98 +L25 +L6 +R7 +R99 +R96 +L85 +L11 +L11 +R11 +R60 +L87 +L73 +R51 +R80 +R46 +L37 +L62 +L725 +R28 +R66 +R51 +R95 +L93 +L54 +R80 +R74 +L612 +L83 +R95 +R13 +L213 +L449 +R58 +R295 +R99 +L48 +L44 +L11 +L79 +R81 +L2 +R56 +L39 +R47 +L748 +L31 +L4 +L76 +L63 +L61 +R52 +R4 +L194 +L43 +R43 +R96 +L39 +L19 +L42 +L94 +R94 +R61 +L40 +R54 +R86 +L33 +L97 +R30 +R74 +R26 +L59 +R83 +L24 +L53 +L47 +R61 +R457 +L58 +L799 +L761 +L761 +L39 +L959 +R811 +R49 +L49 +R234 +L7 +L207 +R28 +L54 +L90 +R544 +L671 +L11 +L866 +L61 +R57 +L30 +R938 +L7 +R51 +R51 +R22 +L53 +R80 +R77 +L77 +R393 +L60 +L7 +R74 +R604 +R96 +R81 +L81 +R66 +L49 +L284 +L37 +L19 +L41 +L17 +L19 +R44 +L14 +R70 +L262 +R35 +L210 +L96 +R33 +L23 +L77 +L69 +R469 +L17 +L67 +R580 +L7 +L71 +L818 +R42 +L24 +R21 +L39 +L102 +L17 +L21 +L60 +L7 +L93 +R891 +L91 +R55 +R228 +L83 +R11 +L31 +R72 +R915 +R33 +R41 +R1 +L24 +L89 +L29 +L28 +R62 +R63 +R3 +L72 +L573 +R22 +R67 +R48 +R10 +R63 +R65 +L361 +R31 +R40 +L540 +R476 +L39 +R68 +L14 +L30 +L29 +L322 +L40 +L515 +R6 +L680 +L281 +L53 +R419 +L66 +R64 +L34 +L30 +L1 +L44 +R45 +R51 +R49 +L54 +R54 +L845 +L81 +R91 +L63 +R96 +L98 +R46 +R54 +L99 +L1 +R776 +R51 +L45 +L70 +L905 +R16 +R22 +L715 +L30 +R98 +L12 +R14 +R96 +L96 +L15 +L760 +R69 +L78 +R84 +L37 +R66 +L91 +R78 +L945 +R48 +L73 +R82 +R72 +R49 +R3 +R23 +R25 +R27 +L27 +L38 +R38 +L69 +R69 +R90 +L56 +L40 +R6 +L13 +L910 +L77 +L93 +L7 +R56 +L96 +L11 +L21 +R70 +L98 +R37 +L78 +L950 +L9 +L56 +L597 +R84 +L6 +R201 +R734 +L451 +L90 +R81 +L38 +R38 +R24 +R76 +R28 +R79 +L69 +R62 +L64 +R29 +L27 +R534 +R28 +R78 +R70 +R60 +L31 +R223 +R56 +R30 +L70 +R84 +R26 +L643 +L78 +L5 +R936 +R64 +R91 +L66 +R163 +R612 +L95 +R95 +R569 +L34 +R665 +R13 +R20 +R32 +R87 +R3 +L71 +R16 +R39 +R83 +R93 +R80 +L60 +L235 +L58 +R38 +R17 +L283 +L17 +L68 +L29 +L32 +R32 +R67 +R4 +R295 +L66 +R185 +R815 +L10 +L34 +R40 +L327 +L269 +L3 +L228 +R847 +R94 +L210 +L8 +R8 +R1 +R90 +L91 +R55 +R86 +L41 +R28 +R66 +L18 +L976 +R3 +L403 +L68 +R67 +L21 +R22 +L37 +L63 +R83 +R17 +R27 +L5 +L68 +R23 +L27 +L87 +R37 +R84 +L41 +R21 +L64 +R82 +L93 +R24 +R7 +L20 +R5 +R95 +L75 +R44 +R41 +L10 +R66 +R949 +L77 +L30 +L218 +L38 +R27 +L433 +L915 +L366 +R254 +R726 +R86 +R69 +L633 +L64 +R57 +R96 +R86 +R99 +R59 +R46 +L24 +R78 +L22 +R50 +R47 +R738 +L613 +L82 +R7 +R75 +R70 +R47 +R46 +R37 +R15 +L44 +R991 +R59 +L21 +R64 +R36 +L97 +L38 +R35 +L4 +R92 +L27 +L29 +L28 +L83 +R87 +L280 +L28 +L49 +L401 +L50 +R164 +R24 +R12 +L87 +R58 +R41 +R62 +R68 +L89 +R58 +L52 +L59 +R12 +L19 +R7 +L57 +L945 +L298 +R84 +L88 +R4 +L17 +R28 +L92 +L274 +L45 +R17 +R6 +R41 +R36 +R27 +R498 +L225 +R30 +R57 +R13 +R95 +L62 +L220 +R87 +R71 +R45 +L16 +R8 +R92 +L91 +L33 +L176 +R24 +R76 +L145 +R45 +R72 +R668 +L770 +R88 +R99 +L81 +L18 +R185 +L967 +L76 +R85 +R271 +R74 +L279 +L951 +R17 +L17 +L12 +L73 +L315 +R74 +L74 +R40 +L40 +L9 +L46 +R55 +L86 +L998 +L16 +L65 +R18 +R773 +L12 +R49 +R9 +R28 +L715 +L85 +R890 +R944 +R66 +L47 +L91 +L62 +R62 +R38 +R690 +R392 +R18 +R71 +L871 +R75 +R325 +R95 +R249 +R183 +L27 +L52 +R3 +L51 +L21 +R84 +R37 +R21 +R46 +R218 +R321 +L28 +L53 +R70 +L14 +R6 +R20 +L3 +L46 +L84 +R78 +R15 +L56 +R89 +L14 +L11 +R42 +L17 +R5 +R95 +R31 +R14 +L1 +R39 +R61 +L62 +R56 +L38 +L75 +L25 +L84 +R12 +L66 +L20 +R58 +L27 +R65 +L48 +L88 +L98 +R8 +L12 +R99 +R40 +L65 +R96 +R86 +L56 +R41 +L41 +L67 +L71 +L4 +R3 +R9 +R5 +R48 +R39 +L47 +L11 +R5 +L14 +L11 +L5 +L24 +R17 +L9 +R17 +R26 +R10 +R16 +R47 +R4 +R18 +L21 +L22 +R24 +L33 +L30 +L2 +L1 +L49 +L5 +L29 +R47 +L8 +L26 +R8 +R23 +R23 +L34 +R50 +R40 +R7 +R30 +L37 +L43 +R21 +R31 +L24 +R24 +L43 +R47 diff --git a/src/day01.rs b/src/day01.rs new file mode 100644 index 0000000..f84557a --- /dev/null +++ b/src/day01.rs @@ -0,0 +1,90 @@ +use std::error::Error; + +pub fn run(input: &str) -> Result<(), Box> { + println!("part 1: {}", part1(input)?); + println!("part 2: {}", part2(input)?); + Ok(()) +} + +fn part1(input: &str) -> Result> { + let mut res = 0; + let mut pos = 50; + for l in input.lines() { + let (dir, step) = l.split_at(1); + let mut step = step.parse::()?; + if dir == "L" { + step *= -1; + } + pos = (pos + step) % 100; + if pos < 0 { + pos += 100; + } + if pos == 0 { + res += 1; + } + } + + Ok(res) +} + +fn part2(input: &str) -> Result> { + let mut click = 0; + let mut pos = 50; + let mut pos_last = 50; + for l in input.lines() { + let (dir, step) = l.split_at(1); + let mut step = step.parse::()?; + if dir == "L" { + step *= -1; + } + click += step.abs() / 100; // number of turns + step = step % 100; + if step == 0 { + continue; + } + pos += step; + if pos == 0 { + click += if pos_last == 0 { 0 } else { 1 }; + } + else if pos < 0 { + click += if pos_last == 0 { 0 } else { 1 }; + pos += 100; + } + else if pos >= 100 { + click += if pos_last == 0 { 0 } else { 1 }; + pos -= 100; + } + pos_last = pos; + } + + Ok(click) +} + +#[cfg(test)] +mod tests { + use super::*; + static TEXT_INPUT: &str = "\ +L68 +L30 +R48 +L5 +R60 +L55 +L1 +L99 +R14 +L82"; + + #[test] + fn test_part1() { + assert_eq!(3, part1(TEXT_INPUT).unwrap()); + } + #[test] + fn test_part2() { + assert_eq!(6, part2(TEXT_INPUT).unwrap()); + } + #[test] + fn test_part2_r1000() { + assert_eq!(10, part2("R1000").unwrap()); + } +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..d64487e --- /dev/null +++ b/src/main.rs @@ -0,0 +1,27 @@ +use std::env; +use std::process; +use std::error::Error; +use std::fs::File; +use std::io::Read; + +pub mod day01; + +fn main() { + let args: Vec = env::args().collect(); + if let Err(e) = run(&args[1], &args[2]) { + println!("Error: {e}"); + process::exit(2); + } +} + +fn run(day: &str, input_file: &str) -> Result<(), Box> { + let mut f = File::open(input_file)?; + let mut input = String::new(); + f.read_to_string(&mut input)?; + + match day { + "day01" => day01::run(&input)?, + _ => return Err(format!("unknown or unimplemented day \"{day}\"").into()), + } + Ok(()) +} -- 2.39.5