From 1566e3e3740de2884b9da647c2814878ac573561 Mon Sep 17 00:00:00 2001 From: Pcornat Date: Wed, 3 Dec 2025 23:05:12 +0100 Subject: [PATCH] Example solved but bug in input --- .gitignore | 3 + Cargo.toml | 6 + input/day1.txt | 4542 +++++++++++++++++++++++++++++++++++++++++++++++ sample/day1.txt | 10 + src/day1.rs | 110 ++ src/main.rs | 7 + 6 files changed, 4678 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.toml create mode 100644 input/day1.txt create mode 100644 sample/day1.txt create mode 100644 src/day1.rs create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b471067 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/target +Cargo.lock +.idea diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..7d00530 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "adventofcode2025" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/input/day1.txt b/input/day1.txt new file mode 100644 index 0000000..ee8ea92 --- /dev/null +++ b/input/day1.txt @@ -0,0 +1,4542 @@ +L44 +R26 +L38 +R44 +R3 +R1 +R49 +R14 +R18 +L9 +L35 +L34 +L11 +R12 +L43 +R36 +L10 +L50 +L46 +R47 +R46 +L44 +L36 +L37 +L8 +L49 +L20 +R6 +L20 +L14 +R30 +L33 +R48 +L13 +L11 +R48 +L28 +R22 +L15 +L2 +R50 +L42 +L10 +L14 +R15 +R32 +L13 +R12 +R46 +R52 +L7 +L34 +L27 +R90 +R96 +L96 +L97 +R97 +R48 +R81 +L93 +R78 +L25 +R11 +L44 +L56 +L75 +L82 +R15 +R42 +R26 +L43 +R18 +R29 +L30 +R36 +L6 +R86 +L16 +L57 +R57 +L57 +R57 +R10 +L19 +R45 +R33 +L80 +R11 +R27 +R73 +R23 +R43 +R21 +R48 +R93 +L30 +R2 +R37 +L11 +R74 +R22 +R478 +L10 +L42 +R97 +L45 +L48 +R6 +R17 +L75 +L42 +L55 +R79 +R27 +L82 +R88 +L717 +R760 +L485 +R53 +L91 +R114 +R90 +L20 +L19 +L22 +L8 +R30 +R265 +R45 +L910 +L71 +L78 +R81 +R671 +R97 +L8 +L197 +R88 +R17 +L65 +R126 +R33 +R58 +R148 +R39 +R761 +R59 +L45 +R86 +R47 +R98 +R41 +R86 +R928 +R66 +L766 +L81 +L19 +L30 +R64 +R833 +L330 +L10 +L27 +R57 +L75 +R18 +R30 +R70 +L29 +L58 +L313 +L8 +L492 +L77 +L23 +R90 +L69 +R79 +R75 +L63 +R599 +L76 +R65 +L38 +L62 +R92 +R8 +L49 +L350 +R99 +L51 +R677 +L95 +R69 +L63 +L28 +L9 +L72 +R28 +L94 +R38 +R6 +R70 +L15 +L61 +L90 +R90 +L745 +R398 +R10 +R37 +R21 +R93 +L14 +L10 +R10 +R579 +R21 +L77 +L83 +R4 +L244 +R80 +R93 +L415 +R953 +L74 +R10 +L45 +R4 +L94 +L93 +L992 +R46 +R4 +L77 +L241 +L206 +L18 +L25 +R90 +L458 +R68 +L28 +L24 +R24 +L82 +L35 +L965 +R44 +L44 +R76 +R871 +R553 +R1 +L82 +R81 +L46 +L35 +R85 +L25 +R21 +L75 +R55 +R47 +L922 +L59 +R254 +L74 +R27 +L261 +R8 +L642 +L73 +R15 +L66 +L549 +L92 +L1 +L967 +L417 +L921 +R69 +L54 +L2 +R73 +L181 +R88 +L80 +L2 +L53 +L3 +L42 +L22 +L67 +R728 +R61 +L84 +R20 +R5 +L3 +L838 +R88 +R278 +R8 +R26 +L5 +R5 +R92 +L65 +R73 +R58 +L52 +L19 +L75 +L12 +L67 +R51 +L67 +R43 +R40 +R86 +L583 +R597 +L319 +L57 +R517 +R567 +L67 +R59 +R31 +L35 +R4 +L302 +R44 +R58 +L13 +R737 +R76 +R320 +R83 +L46 +R62 +L89 +R70 +R2 +L13 +L28 +R639 +L86 +R86 +R14 +R86 +R29 +L37 +R89 +L781 +L76 +R77 +R10 +R87 +R2 +L16 +L18 +R848 +L314 +R54 +R91 +L73 +R28 +R55 +L55 +R66 +R97 +R35 +L2 +R6 +R10 +R53 +L23 +R12 +L64 +L290 +R85 +R815 +R401 +R99 +R70 +R30 +R3 +R58 +L50 +L24 +L87 +L45 +L97 +L58 +L158 +R437 +L31 +L448 +L42 +L97 +L61 +R53 +L36 +R88 +R50 +R45 +R77 +L77 +L96 +L43 +R916 +L83 +L33 +L87 +R26 +L14 +L18 +R15 +L83 +R44 +R17 +L11 +L43 +L63 +R775 +L19 +R49 +L62 +L87 +L798 +R498 +R93 +L27 +L87 +R78 +R893 +L65 +L74 +R6 +L45 +R124 +R4 +R82 +L25 +L909 +L10 +R96 +L948 +L44 +R228 +L78 +R8 +L63 +R684 +R4 +L376 +L44 +R495 +L27 +R58 +R78 +L94 +R60 +R44 +R81 +R813 +R553 +L94 +L2 +L22 +R529 +R96 +L98 +L75 +R71 +R38 +R99 +R91 +R65 +L64 +L3 +L7 +L490 +L67 +L854 +L184 +R86 +R419 +L73 +L27 +R14 +L33 +R74 +R52 +R81 +L38 +R50 +R96 +R44 +L62 +R222 +R39 +L31 +L908 +R15 +R85 +L99 +R94 +L95 +R84 +R16 +R13 +R527 +L268 +L921 +L51 +L97 +R640 +R52 +R47 +L57 +L85 +L737 +L74 +L89 +R396 +L96 +R75 +L24 +R670 +R79 +R30 +L66 +L21 +L480 +R96 +L665 +L94 +R39 +L39 +R33 +R20 +L53 +L53 +R97 +L8 +R64 +R126 +R74 +L393 +L707 +R13 +R977 +R13 +R90 +L20 +L85 +R12 +R31 +L66 +R26 +L98 +R307 +L92 +R92 +R56 +L360 +R50 +R56 +R4 +R43 +L3 +L86 +R140 +L90 +L10 +L71 +L29 +R517 +R86 +R397 +R87 +L37 +L43 +L35 +R28 +R36 +L60 +L95 +L69 +R44 +R35 +R68 +L63 +R99 +L95 +L260 +L40 +L91 +R54 +L63 +R34 +L34 +R51 +L43 +R208 +L16 +L141 +L59 +R71 +L71 +L73 +L74 +L13 +L29 +L49 +R45 +L10 +L39 +L63 +R71 +R34 +L44 +L856 +L49 +L438 +R866 +L86 +L7 +L86 +L18 +R51 +R541 +L74 +L84 +R84 +L39 +L61 +R15 +L15 +L553 +L978 +R1 +L21 +R6 +R20 +R25 +L21 +R721 +R207 +R47 +L54 +R16 +L16 +R38 +L251 +L288 +R31 +R70 +R26 +R44 +R30 +R67 +R46 +L86 +R10 +R591 +R55 +L34 +R51 +L88 +R88 +R81 +R19 +L97 +R86 +R76 +L58 +L7 +R51 +L77 +R230 +R25 +L29 +L6 +R6 +R40 +L188 +R62 +R854 +R57 +R75 +R6 +L76 +L7 +L23 +R843 +L34 +L709 +R46 +R88 +R66 +R633 +L87 +R54 +R29 +L33 +L66 +R92 +R3 +L9 +R34 +L38 +R88 +R14 +R930 +L26 +R29 +R66 +R87 +R83 +R20 +R67 +L872 +R26 +L790 +L81 +R47 +R56 +R13 +R694 +R99 +L62 +R58 +L89 +R731 +R31 +L41 +L90 +R92 +L57 +R12 +R65 +R88 +L60 +L40 +R212 +R20 +L23 +L80 +L29 +L423 +L77 +R73 +R643 +R84 +R1 +R30 +L31 +L67 +R49 +R38 +L24 +R83 +L84 +R66 +R39 +L660 +L594 +R66 +R18 +L56 +L74 +L2 +R2 +L19 +L81 +L52 +L89 +L750 +R3 +R8 +L48 +L74 +L932 +R54 +R47 +L99 +L268 +R39 +L939 +L352 +R31 +L79 +R33 +R69 +R517 +R17 +R68 +L73 +R25 +L40 +L16 +L2 +L62 +R633 +L169 +R50 +L550 +L30 +L94 +L576 +R15 +R8 +L23 +R16 +R91 +L44 +R137 +R896 +L65 +L65 +R34 +L68 +R68 +L91 +L409 +R2 +R59 +L61 +L919 +L98 +R93 +R24 +R51 +R6 +L457 +L94 +L34 +L72 +R3 +R19 +R15 +R933 +R97 +L67 +R29 +L92 +L90 +L47 +R6 +L86 +R680 +R77 +L77 +L72 +L29 +L95 +L30 +L754 +L140 +R69 +L49 +R84 +L326 +L58 +L38 +R81 +R57 +L91 +R91 +R171 +L93 +R87 +R95 +L94 +L66 +R69 +L69 +L29 +L47 +R815 +R16 +L138 +R83 +L92 +L63 +L6 +R61 +R20 +R261 +R809 +L54 +R92 +L28 +L44 +R61 +L65 +R48 +R84 +L526 +L558 +L84 +R84 +L36 +L725 +L633 +R94 +L56 +L44 +R78 +L9 +R9 +L678 +R50 +L50 +R11 +R8 +L68 +L161 +R10 +R35 +R65 +L48 +R16 +R13 +R38 +L41 +L78 +R125 +R748 +R14 +L98 +L789 +L39 +R39 +R292 +R308 +R14 +L199 +R80 +L95 +L44 +R37 +R7 +R98 +R27 +R274 +L81 +L18 +R97 +R4 +R499 +L61 +R80 +L95 +L75 +R47 +R17 +L58 +R15 +L72 +R21 +L68 +L351 +R52 +L52 +L27 +L41 +R9 +R59 +R61 +L7 +L54 +R680 +R20 +L34 +R34 +L62 +R90 +R72 +R1 +R127 +L28 +L532 +L68 +R81 +R510 +R9 +L88 +R87 +L62 +L84 +L5 +L11 +L637 +R44 +L315 +R8 +R63 +L42 +L58 +L70 +L30 +R70 +L91 +R837 +L45 +L50 +R79 +R86 +L5 +R63 +L66 +R923 +L88 +R32 +L45 +R1 +R32 +L27 +L6 +R86 +R647 +R94 +R51 +L9 +L2 +R25 +L92 +R76 +L559 +R83 +R47 +R53 +R23 +L87 +L62 +L77 +R41 +L54 +R76 +R65 +L10 +R38 +R9 +R438 +L93 +R44 +L306 +L53 +R19 +R89 +R38 +R15 +L953 +R74 +L13 +L6 +R760 +L15 +L67 +L33 +R94 +R23 +L30 +R13 +R80 +R27 +R98 +R99 +R96 +L33 +R33 +L95 +R32 +L310 +L22 +L5 +L87 +L80 +L33 +L444 +L88 +L798 +L70 +L79 +R264 +L85 +R12 +R705 +R283 +L43 +R43 +L71 +R56 +L85 +L953 +R80 +R80 +L57 +L91 +L98 +R39 +L15 +L85 +R87 +R77 +L87 +R17 +R6 +L844 +L56 +R64 +L90 +R236 +R30 +L4 +L48 +R21 +R79 +R6 +L37 +L41 +L27 +R28 +L64 +L68 +R15 +L6 +L94 +R42 +L89 +L83 +L34 +L536 +R773 +R27 +R31 +L45 +R14 +L876 +R90 +L92 +R778 +L74 +R80 +L688 +L1 +R593 +R999 +R73 +L882 +L48 +R23 +L55 +L50 +L683 +R89 +L47 +R4 +R81 +L614 +L24 +L43 +R45 +R74 +L452 +R93 +L59 +L16 +R82 +R91 +R18 +L22 +L854 +R50 +R17 +R7 +L38 +L876 +L65 +R872 +R78 +L15 +R22 +R51 +R64 +R69 +R83 +L136 +R584 +L10 +R10 +L29 +L71 +L306 +L98 +R4 +L75 +R75 +R16 +R66 +L97 +L485 +L90 +R17 +L727 +L54 +L72 +L74 +L56 +L44 +R8 +R92 +R83 +R47 +L30 +L30 +R59 +L241 +L823 +R384 +R2 +L594 +R69 +R74 +L4 +L57 +R61 +L51 +L490 +L18 +R882 +L38 +L1 +R36 +R53 +R327 +L18 +R18 +R65 +R33 +L19 +R395 +L79 +R5 +L9 +R9 +L6 +L495 +L99 +L57 +R2 +L45 +L404 +R93 +L4 +L76 +R191 +R8 +L6 +L402 +L59 +R51 +L2 +R10 +R313 +L313 +L94 +R94 +L32 +R32 +L27 +R12 +L85 +L60 +R2 +L74 +L62 +L45 +R72 +R17 +L56 +L97 +R36 +L4 +R71 +L92 +R66 +L83 +L56 +L135 +R836 +L60 +R29 +L405 +R29 +R70 +R947 +L46 +R710 +R90 +R339 +R62 +R99 +L48 +R18 +R30 +R56 +L35 +R79 +L54 +R54 +R57 +R86 +R412 +L55 +L18 +L41 +L241 +L215 +R504 +R61 +L22 +R72 +L591 +L88 +R313 +L50 +L4 +L80 +R494 +R105 +L564 +R52 +L87 +L42 +R84 +L42 +L63 +L37 +R83 +R17 +L47 +L95 +L858 +L58 +L69 +R91 +R260 +R76 +L54 +L32 +L701 +L13 +R32 +L32 +L116 +R86 +R469 +R61 +R67 +L12 +L11 +R78 +L22 +R79 +R67 +L6 +R60 +R38 +L94 +L225 +R74 +R75 +L80 +L43 +L45 +R49 +L49 +R51 +L92 +R58 +R20 +R41 +L732 +R74 +L20 +L48 +L38 +L14 +L76 +R9 +L754 +L579 +R52 +R55 +R91 +R6 +L48 +R237 +L193 +L59 +R824 +L33 +L8 +L624 +R50 +L2 +L57 +L4 +R5 +R5 +R3 +L22 +L50 +L28 +R44 +R156 +R7 +R92 +R1 +R702 +R28 +R64 +R38 +R68 +R60 +L77 +R20 +R22 +L180 +L722 +R77 +L34 +R434 +R19 +L98 +L697 +R62 +R92 +L99 +L79 +L44 +L256 +L72 +L37 +R17 +L54 +L54 +L42 +R26 +R409 +R47 +R65 +R68 +R827 +L50 +R10 +L11 +L149 +L55 +L91 +L782 +R46 +R82 +L6 +L24 +R60 +L33 +R74 +L171 +L132 +R21 +R52 +L47 +L194 +R27 +L821 +L54 +R33 +R689 +R87 +R13 +R26 +L70 +R42 +R328 +R25 +L25 +L18 +L30 +L96 +R93 +R51 +R29 +R53 +L82 +R20 +R67 +L987 +R97 +L37 +L60 +L23 +R553 +L86 +L103 +R859 +L93 +R93 +R699 +L499 +R13 +L25 +L688 +R349 +R51 +R67 +R19 +R81 +L582 +R85 +R23 +R7 +L54 +L46 +R76 +R98 +R14 +L226 +R37 +R63 +L662 +L426 +L74 +L89 +L11 +L51 +L84 +L99 +R60 +L56 +L385 +L85 +R91 +R50 +R59 +R29 +L229 +R32 +R68 +R16 +L16 +R972 +L72 +R82 +R18 +L12 +L577 +R89 +R36 +L43 +L49 +R31 +L16 +R41 +L17 +R37 +R2 +R65 +L29 +R42 +L96 +R996 +R29 +R11 +L71 +R760 +R744 +L73 +R60 +R95 +L87 +L24 +R56 +R37 +R63 +L339 +R64 +L972 +R382 +L35 +R60 +L254 +L147 +L2 +R84 +L18 +L37 +R33 +R57 +R34 +L743 +R1 +R47 +R85 +R155 +L55 +R33 +R24 +L57 +R21 +R887 +R92 +L152 +R4 +R948 +L63 +R56 +R23 +L34 +L93 +R11 +R6 +R19 +L98 +L667 +L60 +R91 +R57 +L48 +L554 +L30 +L2 +L971 +R61 +R780 +L21 +L63 +L81 +L395 +L6 +L48 +R14 +L97 +R20 +R93 +R55 +R630 +L70 +R7 +L22 +R65 +R258 +L986 +L6 +L452 +L79 +L92 +L44 +L64 +R35 +R11 +R26 +L20 +R56 +R292 +L10 +R38 +R45 +R27 +R31 +R50 +L351 +R45 +L75 +L23 +L77 +R514 +R86 +R22 +R78 +L71 +L325 +L904 +L555 +L45 +L95 +R60 +L99 +R2 +R32 +R49 +L49 +L62 +R10 +L27 +R593 +R75 +L80 +L9 +L90 +R790 +R27 +L84 +R83 +R459 +R83 +L169 +R41 +R32 +L45 +R82 +L258 +R749 +L7 +L40 +L463 +L990 +L7 +L166 +L72 +R45 +R23 +L23 +R85 +R415 +L74 +L26 +L45 +R59 +L323 +L98 +L93 +R944 +L11 +L77 +L9 +R53 +R28 +R41 +L62 +R97 +R55 +L52 +R992 +L99 +L851 +R51 +R527 +R97 +L24 +L734 +R71 +L518 +R281 +L4 +R27 +R677 +L78 +L32 +L75 +L580 +R86 +R179 +L6 +R86 +R20 +R994 +L86 +L70 +R82 +R80 +L9 +L991 +R86 +L72 +L814 +L24 +L66 +L41 +L69 +L897 +R259 +R8 +L70 +R96 +R68 +L18 +L14 +L832 +L315 +L85 +R56 +L56 +L5 +L7 +L66 +L44 +R67 +R98 +R57 +R10 +R490 +L81 +L89 +L29 +R99 +L84 +L69 +L947 +R99 +R15 +L41 +L78 +R58 +L19 +R57 +L736 +L22 +R96 +R71 +L59 +R87 +R39 +R655 +R84 +L97 +R40 +R938 +L5 +L10 +R56 +R24 +L952 +L20 +L956 +L77 +L47 +R73 +R27 +L9 +R309 +R93 +L50 +L80 +R32 +R3 +R754 +R53 +R95 +R52 +R48 +L38 +R284 +R688 +R9 +R81 +R93 +L17 +L387 +L713 +L1 +L99 +L35 +R35 +R146 +R958 +R96 +L7 +L58 +R65 +L12 +R826 +L14 +L15 +R53 +R15 +L265 +R71 +R41 +R70 +R930 +R6 +R94 +L98 +R694 +L96 +L9 +L991 +L34 +L66 +L29 +R53 +R76 +R61 +R39 +R72 +L343 +L729 +L91 +L767 +L10 +R46 +L78 +R9 +R91 +L91 +L87 +L622 +R47 +L47 +R826 +L96 +R72 +L40 +L36 +R74 +R12 +R72 +R95 +L115 +R32 +R804 +L927 +L73 +L92 +R397 +R95 +L65 +R66 +R72 +R323 +L78 +L46 +R6 +L3 +R78 +L25 +L77 +R65 +L16 +R50 +L150 +L876 +L95 +R79 +R36 +L44 +L6 +R16 +R90 +L94 +L10 +R43 +R61 +R44 +R22 +L822 +L14 +R82 +R97 +R91 +R816 +L446 +R494 +R36 +R22 +R578 +L619 +R81 +R38 +R123 +L53 +R6 +R52 +L39 +L304 +L69 +R95 +R66 +R23 +R43 +R650 +L47 +L46 +R32 +L32 +L30 +R66 +L36 +R21 +L21 +R29 +R766 +L15 +R61 +L41 +L21 +R49 +L28 +L54 +R54 +L452 +R73 +L34 +L639 +R68 +L16 +R8 +L8 +L38 +R576 +R86 +R76 +L52 +L848 +L47 +L864 +L212 +R23 +R57 +R30 +L46 +R59 +L1 +L99 +R720 +L71 +L521 +R572 +R830 +R34 +R36 +R52 +L74 +R20 +L40 +L58 +R23 +L23 +L81 +R20 +R21 +R40 +L824 +L776 +R84 +R8 +R53 +L537 +L80 +L28 +R95 +R17 +R39 +R64 +R50 +R35 +L84 +R44 +R8 +R32 +L4 +L70 +L326 +L88 +L58 +L771 +R57 +R60 +L90 +L710 +R632 +L232 +R38 +R162 +L10 +R20 +L10 +R11 +L93 +L816 +R48 +L30 +R29 +L49 +R29 +L96 +R67 +R960 +L69 +L91 +L50 +R50 +L9 +L85 +R49 +L55 +R25 +L225 +L7 +L53 +L12 +L72 +R75 +L31 +R50 +L166 +L884 +L249 +L65 +L934 +L493 +L859 +R587 +L70 +L43 +L19 +R45 +L574 +L785 +R59 +R69 +L69 +L35 +R57 +L722 +L83 +R483 +L97 +R96 +R11 +R91 +R99 +L271 +R57 +R75 +R27 +R12 +L20 +R56 +L77 +R41 +L21 +L79 +L91 +R891 +L14 +R28 +R55 +R23 +L43 +L32 +R434 +L103 +L5 +R35 +R25 +R240 +R57 +L5 +R867 +R77 +L83 +L256 +L488 +R53 +L345 +L68 +L77 +R5 +L80 +L606 +L8 +R14 +L62 +L81 +R43 +L95 +R97 +R527 +R19 +L651 +R3 +L386 +L14 +L992 +R292 +L36 +L94 +R80 +R93 +L10 +R65 +R70 +L68 +R61 +L61 +R12 +L98 +L94 +R1 +L422 +R5 +R92 +L3 +R32 +R75 +R302 +R796 +L98 +R1 +R99 +L42 +L60 +R2 +R26 +R25 +R49 +R98 +L36 +L52 +R290 +R79 +L53 +L26 +L59 +R40 +L85 +R46 +R58 +R27 +R87 +R38 +R237 +R11 +L74 +R64 +R885 +R56 +L62 +R1 +R432 +L55 +L647 +R93 +L5 +R76 +R11 +R885 +R149 +R56 +L99 +L9 +R97 +L54 +L38 +R38 +R12 +R4 +L16 +L81 +R81 +R254 +L54 +L17 +R91 +L1 +L510 +R82 +L45 +R393 +L93 +R27 +L92 +L82 +L53 +R21 +L15 +L53 +L253 +L95 +L10 +L47 +R29 +R67 +R83 +R40 +L2 +R9 +R12 +L21 +R46 +L11 +L79 +R26 +L30 +R91 +L330 +R122 +R70 +L41 +L65 +L607 +R9 +L66 +R43 +R59 +R98 +L77 +L45 +R71 +L549 +R29 +R71 +L27 +R27 +L91 +L942 +R33 +R843 +R57 +L31 +L10 +R41 +L20 +L80 +L17 +R80 +R99 +R45 +L73 +R24 +R49 +L7 +R912 +R45 +R786 +R3 +L84 +R57 +R38 +L93 +R36 +R23 +R58 +R19 +L31 +L63 +R94 +R3 +R97 +L779 +R70 +L60 +L51 +R93 +R87 +L960 +L38 +R38 +R701 +R85 +R29 +R69 +R209 +R7 +L42 +L73 +R31 +L99 +L17 +R756 +L56 +L82 +L70 +L748 +R64 +R836 +R15 +L76 +R89 +R39 +L98 +L77 +L32 +R240 +R60 +L43 +R83 +L33 +L2 +L65 +R94 +R69 +R48 +R56 +L67 +L61 +L39 +L55 +L15 +R71 +R32 +R2 +R76 +L19 +R8 +L97 +L5 +R2 +L44 +R92 +L90 +R64 +L53 +L85 +L84 +R48 +R52 +R10 +R90 +R81 +R39 +L90 +R70 +L85 +R10 +L25 +L9 +L31 +R40 +L25 +R4 +L435 +R6 +R72 +R63 +R11 +R50 +L782 +R56 +R82 +L2 +R8 +R637 +L35 +R87 +L797 +L63 +L76 +R39 +L314 +R44 +R570 +L64 +L778 +L58 +L106 +L94 +R21 +L553 +R49 +R99 +L74 +R63 +L79 +L714 +R21 +R67 +R93 +L31 +R938 +R68 +R32 +R72 +R83 +R75 +R170 +R21 +R26 +L77 +L99 +R29 +L49 +R749 +L86 +L14 +R10 +R52 +R42 +L44 +L401 +L56 +R420 +R62 +R15 +R480 +L83 +L85 +R59 +L971 +R98 +L126 +R78 +L126 +L24 +L822 +R28 +R99 +R69 +R226 +R24 +L924 +L27 +R4 +L80 +L97 +L5 +L78 +L39 +R30 +L8 +R853 +L53 +L54 +R54 +R88 +L14 +L74 +L51 +R51 +R2 +L796 +R39 +R61 +R49 +L34 +L83 +R62 +R65 +L813 +L752 +L11 +R24 +L13 +L86 +L850 +R36 +R267 +R73 +L963 +R23 +L79 +R879 +R98 +R68 +L63 +R97 +R486 +R92 +L28 +R31 +L19 +L62 +R426 +R76 +R1 +R97 +R10 +R82 +R739 +L31 +R96 +L396 +R27 +R73 +R40 +L9 +R552 +L25 +L79 +R65 +R986 +R570 +R99 +R5 +L84 +R80 +L889 +R89 +L66 +L8 +R547 +L6 +L26 +R84 +L41 +R263 +R36 +R17 +R9 +R56 +L55 +L89 +L21 +R27 +R773 +L34 +R34 +R823 +R86 +R45 +R46 +L15 +R37 +L427 +L95 +L68 +L5 +R73 +R973 +R27 +L90 +L491 +L67 +L92 +L60 +L26 +R44 +R27 +R55 +R54 +R3 +R9 +L10 +R44 +R17 +L17 +L61 +R61 +R99 +R23 +L22 +R6 +R94 +L51 +L98 +R52 +L78 +L25 +L48 +L14 +L38 +R12 +L57 +R45 +L335 +R52 +L39 +R506 +L35 +R51 +L22 +L597 +L43 +L61 +L13 +L3 +R39 +L39 +R372 +R67 +R27 +R81 +L8 +R678 +R49 +L20 +R634 +L741 +L7 +R7 +L80 +R657 +R83 +L52 +R46 +L41 +R87 +L89 +L17 +L828 +R3 +L39 +R60 +R10 +R73 +R27 +R75 +L75 +L849 +R749 +L64 +L68 +R182 +R50 +L29 +R29 +L77 +L647 +L33 +R57 +R96 +L68 +L28 +L36 +R55 +R774 +L76 +L1 +R384 +R45 +L40 +R64 +L77 +R8 +R960 +R46 +L17 +L89 +R524 +L49 +R961 +L38 +L83 +R85 +L90 +L110 +R10 +L10 +L10 +R10 +R27 +L27 +L356 +L44 +R29 +L61 +R84 +R48 +R88 +R30 +R62 +R720 +L91 +L161 +R63 +R89 +L59 +L66 +L86 +R67 +L756 +R1 +L911 +R416 +R2 +L45 +L7 +R43 +R1 +R793 +R7 +R42 +L42 +L63 +R7 +R71 +R18 +R75 +R352 +L91 +R31 +L647 +R360 +R248 +L661 +L26 +R46 +R30 +L23 +L94 +L404 +R55 +R516 +R40 +L19 +R38 +R88 +R46 +R3 +R63 +R39 +R27 +R75 +L61 +R38 +L9 +R31 +L8 +L91 +L55 +R355 +R84 +L3 +R89 +L76 +L38 +L56 +R21 +R98 +R65 +L82 +R7 +L85 +L76 +R54 +R98 +R57 +L53 +R96 +R17 +R4 +R5 +R10 +R64 +R58 +L22 +L57 +R21 +R807 +L136 +L878 +L18 +R25 +R383 +L83 +R50 +R50 +R80 +L54 +R474 +L74 +R74 +R397 +R82 +R70 +R53 +R98 +R56 +L56 +R69 +L169 +R50 +R76 +L95 +L31 +R91 +R9 +L93 +L63 +L7 +R863 +R18 +L93 +L97 +R47 +R89 +L161 +L72 +R69 +R83 +R72 +L88 +R61 +L86 +L88 +R327 +R64 +R55 +L55 +R55 +L20 +L80 +L59 +R21 +L12 +R56 +L15 +R34 +L225 +L1 +L23 +R45 +L62 +R68 +L452 +R56 +L69 +L45 +L77 +L80 +L54 +R12 +R82 +L1 +L99 +L78 +L991 +R69 +R80 +R521 +R45 +L2 +R56 +R75 +L86 +R68 +L57 +L521 +L79 +L60 +L95 +L51 +L52 +R58 +R76 +L76 +L10 +R583 +R27 +R12 +L12 +R573 +R50 +L99 +R76 +L92 +R852 +L31 +R71 +R53 +R36 +R232 +R36 +L38 +R57 +R78 +L34 +L18 +L40 +R38 +L30 +R68 +L186 +L3 +L85 +L822 +L44 +L99 +R87 +L90 +L96 +R72 +L81 +L25 +L63 +R85 +R88 +L76 +R89 +R22 +R53 +L264 +R990 +L46 +R69 +R87 +R10 +L10 +L99 +L1 +R53 +R747 +R47 +R327 +R826 +R82 +R48 +R70 +L59 +R82 +L94 +R971 +R54 +R46 +R36 +R964 +R138 +L38 +L26 +R33 +L50 +L57 +L79 +L60 +L81 +R87 +L67 +L77 +L123 +R95 +L95 +L95 +R19 +L95 +L29 +L76 +R68 +R87 +L79 +L577 +R96 +R84 +L5 +R618 +L613 +L6 +L47 +R50 +L36 +R341 +R7 +L12 +L63 +L138 +R544 +L43 +L760 +R67 +R21 +R72 +R481 +L55 +R35 +L358 +L3 +R7 +L33 +L334 +R9 +R3 +L79 +R27 +R20 +R11 +L97 +L65 +R42 +R20 +R69 +R17 +L17 +L39 +L787 +L17 +R669 +R105 +R216 +R91 +L38 +R31 +R463 +R43 +R63 +R932 +L32 +L366 +L34 +R312 +R17 +R62 +R70 +L48 +L73 +R26 +L26 +R60 +L17 +R849 +R41 +R475 +R52 +R31 +L90 +R79 +L20 +R241 +L941 +L227 +R27 +L83 +R42 +R32 +R9 +L56 +L735 +R12 +R366 +R15 +R98 +R3 +R11 +R6 +L413 +L21 +R14 +R54 +R28 +R74 +R44 +R37 +L11 +R74 +R11 +L65 +L44 +R86 +R59 +L105 +R52 +R40 +L8 +R74 +R68 +R532 +R496 +L53 +R57 +R83 +L83 +L6 +R18 +L12 +R49 +L88 +R39 +R387 +L51 +L36 +L70 +L30 +L90 +L24 +R54 +L161 +R47 +L27 +R401 +R1 +L947 +R46 +L98 +L802 +L49 +R41 +L92 +L84 +R95 +R289 +R91 +R89 +L57 +L61 +L45 +R44 +L5 +R69 +R75 +R358 +R12 +R30 +R2 +R13 +R191 +R56 +R38 +L44 +L56 +L49 +L18 +R67 +L6 +L45 +L771 +R29 +L7 +L25 +L75 +R356 +R12 +R32 +R116 +L67 +R40 +R48 +R86 +L99 +R76 +R98 +L17 +R19 +R74 +L54 +R48 +L43 +L15 +R21 +L831 +R17 +L17 +R79 +L79 +L548 +L6 +L9 +L37 +R665 +L80 +R46 +R69 +L86 +L40 +R65 +R61 +R58 +R42 +R61 +L61 +R469 +L224 +R655 +R198 +R87 +R22 +L92 +L15 +R79 +R2 +L60 +R615 +R64 +L93 +L7 +R4 +R33 +R739 +L876 +L37 +L40 +L73 +L50 +L920 +L61 +R81 +L5 +L95 +L3 +R72 +R78 +L7 +R960 +R40 +R999 +L272 +L72 +L346 +L39 +L10 +R65 +L765 +L54 +R226 +R6 +L78 +L60 +R28 +R56 +R376 +R49 +L16 +R67 +L83 +L17 +R7 +R893 +L24 +R24 +R138 +L47 +L239 +R347 +L99 +R51 +L51 +L925 +L80 +L95 +L60 +R60 +L65 +R72 +R14 +L63 +R79 +R63 +R52 +R48 +L168 +R59 +L33 +R27 +L85 +R463 +L16 +R35 +R133 +L34 +L838 +L43 +L27 +R27 +R3 +L82 +L35 +R62 +L9 +R86 +L25 +L766 +R66 +L775 +R35 +L409 +L69 +R78 +R43 +L94 +L9 +L33 +R39 +R805 +L11 +R98 +R2 +L65 +L835 +R443 +R67 +R90 +L42 +L58 +R282 +L763 +R81 +L82 +R65 +R41 +R508 +R368 +R55 +R45 +R505 +R987 +L37 +R376 +R61 +L92 +L129 +R5 +L22 +R46 +R71 +L71 +L46 +R97 +R94 +L71 +R12 +R84 +R19 +L89 +L238 +R38 +L88 +R61 +L23 +L45 +L83 +R76 +L98 +R19 +L19 +R54 +L59 +L95 +L79 +L21 +R88 +L88 +L44 +R18 +L1 +R27 +R934 +L24 +R25 +L35 +L35 +L65 +L870 +L80 +L750 +R15 +L45 +R886 +L394 +L362 +R73 +L47 +R53 +L83 +L3 +R7 +R46 +R87 +R67 +R47 +L70 +L52 +R85 +R51 +L92 +R5 +R52 +L826 +L27 +L73 +L3 +R883 +L553 +L27 +R72 +L59 +R73 +L28 +L115 +R86 +R617 +R63 +L909 +L51 +R97 +L46 +R26 +L34 +R979 +R57 +R26 +L94 +L60 +L87 +R92 +R95 +R87 +R713 +L90 +R64 +L74 +L88 +L93 +L21 +R85 +L40 +R29 +L68 +L62 +L9 +L87 +R54 +L31 +R1 +R226 +L89 +R5 +R88 +R76 +R21 +L54 +R99 +R58 +L23 +R23 +R46 +L46 +R94 +R57 +R39 +L90 +R68 +R32 +R696 +R22 +R99 +R89 +L506 +L31 +L108 +R157 +R982 +R26 +R45 +L57 +R50 +L23 +R72 +L13 +L45 +R945 +R463 +L963 +R58 +R42 +L94 +R61 +R63 +R16 +R454 +R94 +R6 +R865 +L743 +R78 +R19 +R858 +L390 +R86 +R92 +L65 +R90 +L51 +R614 +R29 +R18 +L76 +R176 +L12 +L19 +R84 +R67 +R86 +R84 +R10 +L20 +L56 +L6 +R782 +L780 +R53 +L73 +L584 +L16 +R74 +R26 +R21 +R54 +R625 +R64 +R36 +R52 +L52 +R96 +L894 +L87 +L53 +L20 +L91 +L974 +L2 +R66 +L81 +L82 +L78 +R31 +R69 +L39 +L45 +L33 +L333 +R83 +R67 +L87 +L895 +R82 +L11 +R11 +L78 +L761 +L61 +R10 +L10 +R259 +L18 +L126 +L15 +R331 +L876 +L27 +L72 +L27 +R7 +R32 +R960 +R72 +L7 +R7 +L518 +L21 +R39 +L1 +R1 +L52 +R23 +L71 +L62 +L252 +L686 +R605 +R31 +L36 +L97 +R13 +R68 +R16 +R91 +R339 +R95 +R75 +R96 +R7 +L603 +R71 +R29 +R81 +L8 +R94 +R2 +L99 +R97 +R24 +L91 +R84 +L14 +L86 +L84 +R219 +L1 +R430 +R16 +L464 +R37 +R26 +R80 +L243 +R744 +R61 +R36 +L26 +R85 +L44 +L56 +R75 +R19 +L588 +R94 +L31 +L69 +L70 +L45 +R15 +R50 +L50 +L21 +L15 +R536 +R765 +L80 +L599 +R92 +R82 +R26 +L45 +L85 +L56 +R192 +L92 +L20 +R36 +R63 +L79 +L985 +L515 +L49 +R49 +R1 +L204 +L414 +L74 +L29 +L80 +R76 +R84 +L60 +R492 +L73 +R19 +R421 +L25 +R66 +L90 +R81 +R184 +R25 +L21 +R21 +L98 +L38 +L64 +L22 +R76 +L36 +L9 +R91 +R16 +L47 +R31 +L25 +L75 +R15 +R478 +L93 +R38 +L12 +L379 +L69 +R22 +R473 +R24 +L432 +L65 +R60 +L860 +L55 +L116 +R78 +R31 +L2 +L390 +L46 +L9 +R52 +L352 +R2 +R72 +R22 +R197 +R85 +R83 +R830 +L26 +L71 +R15 +R92 +R8 +R151 +L46 +L64 +L77 +L3 +R39 +R710 +R66 +R31 +L12 +L995 +L716 +R16 +L889 +L81 +L32 +L19 +L83 +R93 +L233 +L56 +R802 +R98 +R719 +L426 +L86 +L54 +R147 +L15 +R65 +R50 +L419 +R29 +L92 +L13 +L36 +R331 +R565 +L65 +L79 +R18 +L194 +L4 +L65 +L742 +R966 +L23 +L6 +L71 +L70 +R25 +R7 +R20 +L6 +L76 +R26 +L98 +R78 +R94 +L3 +L197 +L698 +R98 +L2 +R502 +R79 +R21 +R620 +R637 +R46 +R97 +L7 +L895 +L598 +L82 +L18 +R82 +L77 +R95 +R40 +R57 +L97 +R43 +L43 +L192 +R92 +R26 +L39 +L87 +L25 +R91 +R78 +R56 +R32 +L270 +L26 +R37 +L5 +L68 +L38 +L62 +R53 +R47 +R88 +L465 +L23 +L72 +R47 +L75 +L795 +L59 +R175 +L21 +L89 +L11 +L7 +L493 +L62 +L38 +L9 +R5 +R4 +L99 +R21 +R17 +L51 +L88 +L50 +R63 +R87 +R21 +L72 +L49 +R598 +L98 +R48 +R852 +L14 +L77 +R91 +R53 +L53 +R85 +R87 +L66 +R66 +R79 +L174 +R57 +R76 +R73 +R75 +R42 +L85 +R53 +R32 +R7 +L5 +R99 +L60 +R35 +R64 +L30 +R93 +R55 +L94 +L54 +R384 +R6 +L41 +L59 +L87 +L94 +R825 +L42 +L79 +R83 +R94 +L53 +R8 +R45 +R88 +R63 +R92 +R57 +R25 +R27 +L30 +R71 +L9 +L84 +R61 +R39 +L36 +L72 +L47 +L75 +R75 +R16 +L61 +R32 +L90 +R91 +R45 +L78 +R32 +R43 +R25 +L54 +L407 +L12 +R85 +R45 +R43 +R69 +L13 +R294 +R150 +R64 +L83 +L730 +R926 +R68 +R369 +R44 +L958 +L14 +R54 +R38 +L10 +R62 +R3 +R67 +L3 +R403 +L31 +R39 +L21 +R13 +L62 +L38 +R17 +L90 +R5 +R68 +L861 +R513 +R44 +L57 +R61 +R3 +R50 +R95 +R24 +R28 +R49 +L12 +R128 +L34 +L431 +R345 +R42 +R13 +L891 +R62 +R52 +L115 +L3 +L24 +L81 +L88 +R88 +L58 +R27 +R31 +L28 +L38 +R250 +L54 +L243 +L40 +R68 +L15 +L44 +R944 +L75 +L83 +L227 +R31 +R92 +L4 +L82 +R48 +L92 +L744 +R61 +R1 +L98 +L54 +R26 +R47 +L25 +R75 +R50 +R34 +L42 +R18 +L31 +L26 +L63 +R855 +L82 +R6 +R39 +L55 +L72 +R58 +L958 +R954 +R20 +L2 +R60 +L98 +L62 +L36 +R37 +R89 +R1 +L90 +R99 +L40 +R68 +L61 +L90 +R108 +R98 +R56 +L639 +L50 +R91 +L541 +L23 +L77 +R54 +L54 +R48 +L48 +L119 +R73 +L12 +R438 +R78 +R642 +R26 +L78 +R52 +R1 +L48 +R67 +L20 +L945 +R89 +L44 +R5 +L233 +L72 +R12 +L924 +R99 +L53 +R79 +L13 +R90 +R62 +R78 +R22 +L24 +L28 +R927 +L1 +R72 +L97 +R99 +L605 +L30 +L65 +L45 +L55 +R3 +R72 +L75 +L92 +R50 +L44 +L14 +R24 +L724 +R39 +L27 +R94 +L6 +R726 +R57 +L183 +R35 +R24 +L7 +R11 +L63 +R85 +L35 +R450 +R58 +R53 +L89 +L22 +L22 +R730 +R92 +R393 +L93 +L93 +R993 +R63 +L75 +L93 +L61 +L69 +L65 +R344 +R47 +L4 +L87 +L93 +L92 +L15 +L71 +L43 +R33 +R81 +R47 +R26 +R18 +R8 +R1 +L31 +L75 +L7 +R13 +R61 +R39 +R52 +L31 +R51 +R69 +L22 +L19 +L53 +L70 +R23 +R940 +R64 +R96 +R20 +R96 +L48 +L756 +R457 +L69 +L98 +R93 +L30 +R12 +R23 +R22 +R38 +R11 +L350 +R30 +L51 +R33 +R728 +R39 +L856 +R656 +L74 +R502 +L66 +L262 +R67 +L297 +R46 +L511 +R95 +L38 +R39 +R325 +R88 +L58 +R24 +L54 +R74 +L23 +R23 +R69 +L60 +R18 +R110 +R198 +L11 +R22 +L337 +L23 +L73 +L82 +L11 +R13 +L27 +R41 +L21 +L26 +L3 +R3 +L625 +L863 +L494 +L18 +L449 +L586 +L46 +R81 +R86 +L27 +R32 +L91 +L25 +R89 +L13 +R8 +L80 +L908 +R54 +L455 +L86 +R83 +L380 +L467 +L10 +R21 +R69 +L18 +L42 +L29 +L11 +R65 +L34 +L115 +L516 +R47 +R830 +L77 +L96 +R53 +L57 +L90 +R22 +R68 +R602 +R88 +L20 +L75 +L695 +L528 +L74 +R53 +L75 +L3 +L2 +L71 +R28 +L65 +R55 +L10 +R492 +L6 +R325 +R20 +L39 +R48 +L209 +L10 +R7 +R16 +L584 +R61 +R925 +L54 +R44 +L44 +R105 +L168 +L68 +L986 +L2 +L55 +R66 +L773 +R53 +R428 +L53 +R39 +R899 +L185 +R88 +L203 +L85 +R53 +L29 +L52 +L14 +L196 +R38 +L5 +L21 +L25 +L65 +L510 +L77 +L587 +L39 +R529 +R50 +L50 +L92 +R15 +R77 +L23 +L80 +R3 +R25 +L91 +R66 +R59 +L92 +L79 +R68 +R44 +R96 +R36 +L59 +L14 +L93 +L19 +R55 +R33 +L92 +L3 +R87 +R67 +L94 +R35 +R60 +L16 +L40 +R25 +L63 +R33 +R66 +L2 +R58 +R44 +R34 +R91 +L5 +R11 +R57 +L88 +L62 +L38 +L19 +L64 +R83 +L58 +R58 +L12 +R81 +R31 +R87 +L25 +L30 +R11 +L47 +R15 +R31 +L26 +L46 +L16 +R44 +R10 +R32 +L1 +R39 +L45 +R23 +R41 +L10 +R37 +R1 +L1 +L5 +R48 +L9 +L45 +L9 +L15 +L8 +L20 +R23 +L30 +R6 +R27 +R49 +L15 +R28 +R33 +R4 +L21 +L12 +R15 +L8 +L9 +L27 +R19 +R2 +L23 +R26 +R15 +L28 \ No newline at end of file diff --git a/sample/day1.txt b/sample/day1.txt new file mode 100644 index 0000000..d03fad7 --- /dev/null +++ b/sample/day1.txt @@ -0,0 +1,10 @@ +L68 +L30 +R48 +L5 +R60 +L55 +L1 +L99 +R14 +L82 \ No newline at end of file diff --git a/src/day1.rs b/src/day1.rs new file mode 100644 index 0000000..e35460f --- /dev/null +++ b/src/day1.rs @@ -0,0 +1,110 @@ +use std::str::FromStr; + +const NEUTRAL: i32 = 100; +const MIN: i32 = 0; +const MAX: i32 = 99; + +const INIT: i32 = 50; + +#[derive(Debug)] +enum Direction { + L, + R, +} + +#[derive(Debug, PartialEq, Eq)] +struct ParseDirectionError; +impl FromStr for Direction { + type Err = ParseDirectionError; + + fn from_str(s: &str) -> Result { + match s { + "L" => Ok(Direction::L), + "R" => Ok(Direction::R), + _ => Err(ParseDirectionError), + } + } +} + +#[derive(Debug)] +struct Instruction { + direction: Direction, + value: i32, +} + +impl FromStr for Instruction { + type Err = ParseDirectionError; + fn from_str(s: &str) -> Result { + if let Ok(dir) = Direction::from_str(s.get(..1).unwrap()) { + Ok(Instruction { + direction: dir, + value: s.get(1..).unwrap().parse().unwrap(), + }) + } else { + Err(ParseDirectionError) + } + } +} + +pub fn solve_part1(input: &str) -> usize { + input + .lines() + .map(|x| Instruction::from_str(x).unwrap()) + .scan(INIT, |acc, instr| { + match instr.direction { + Direction::L => { + *acc -= instr.value; + if *acc < MIN { + *acc += NEUTRAL; + } + } + Direction::R => { + *acc += instr.value; + if *acc > MAX { + *acc -= NEUTRAL; + } + } + } + Some(*acc) + }) + .filter(|&val| val == 0) + .count() +} + +fn intermediate_values(input: &str) -> Vec { + input + .lines() + .map(|x| Instruction::from_str(x).unwrap()) + .scan(INIT, |acc, instr| { + match instr.direction { + Direction::L => { + *acc -= instr.value; + if *acc < MIN { + *acc += NEUTRAL; + } + } + Direction::R => { + *acc += instr.value; + if *acc > MAX { + *acc -= NEUTRAL; + } + } + } + Some(*acc) + }) + .collect() +} + +#[cfg(test)] +mod test { + use crate::day1::{intermediate_values, solve_part1}; + + #[test] + fn part1_sample() { + assert_eq!( + intermediate_values(include_str!("../sample/day1.txt")), + [82, 52, 0, 95, 55, 0, 99, 0, 14, 32] + ); + assert_eq!(solve_part1(include_str!("../sample/day1.txt")), 3); + } +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..d4847d2 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,7 @@ +mod day1; + +fn main() { + println!("Hello, world!"); + let res = day1::solve_part1(include_str!("../input/day1.txt")); + println!("Solution: {}", res); +}