diff --git a/Cargo.toml b/Cargo.toml index 44d1799..937cb49 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] -name = "advent_of_code_XXXX" +name = "advent_of_code_2025" version = "0.1.0" -edition = "2021" +edition = "2024" [dependencies] -tokio = {version = "1.41.1", features = ["full"]} +tokio = { version = "1.48.0", features = ["full"] } diff --git a/assets/images/main.png b/assets/images/main.png index 88eebf8..c2e70ef 100644 Binary files a/assets/images/main.png and b/assets/images/main.png differ diff --git a/input/day01 b/input/day01 index e69de29..d54a03a 100644 --- a/input/day01 +++ b/input/day01 @@ -0,0 +1,4780 @@ +L20 +L13 +L16 +L16 +L29 +L7 +L48 +L48 +L31 +R27 +L24 +L4 +L34 +L41 +L10 +R6 +R43 +R29 +R25 +R4 +L13 +R7 +R9 +L42 +R42 +L16 +L19 +L11 +L8 +R3 +R2 +R17 +R9 +R41 +R42 +L14 +L4 +R22 +L19 +L49 +L29 +R23 +R20 +L13 +L18 +L6 +L40 +L15 +R45 +R34 +R55 +R63 +L9 +L29 +R77 +R42 +R72 +L97 +L17 +L21 +R93 +R34 +L59 +L57 +L49 +R51 +L92 +R57 +R43 +R54 +R46 +L51 +R31 +L56 +L95 +L29 +L20 +R25 +R20 +R42 +R33 +R74 +L12 +R70 +L63 +L69 +L25 +R83 +R42 +L64 +R48 +L67 +L56 +L61 +L89 +R33 +R9 +R47 +R66 +L61 +L5 +L8 +R50 +R8 +L50 +L35 +L65 +R59 +R90 +L64 +L444 +R57 +R2 +R57 +L99 +L58 +L562 +L38 +L96 +L604 +R21 +L21 +R965 +L65 +L99 +R199 +L766 +R18 +R56 +R92 +L69 +R92 +L79 +R56 +L65 +L8 +R73 +L48 +L40 +R11 +R35 +L58 +R177 +R68 +L24 +L51 +L70 +L726 +R32 +L571 +R80 +R69 +L84 +L93 +L10 +L26 +L71 +R987 +L87 +L21 +R36 +L15 +R94 +L94 +R55 +L13 +L69 +L10 +R12 +R861 +R92 +R59 +R13 +L14 +R50 +L36 +R23 +R33 +R4 +L12 +R12 +R23 +R87 +L70 +R74 +L74 +L23 +R1 +L78 +L75 +L44 +L80 +R19 +L20 +L278 +L22 +R801 +L1 +L81 +R50 +R51 +L4 +R61 +R41 +L62 +R71 +L59 +R58 +R25 +L51 +R33 +L83 +L92 +L91 +R33 +R19 +L21 +L21 +R859 +R83 +L83 +L46 +R42 +L332 +L497 +L38 +R23 +R12 +L57 +L43 +R96 +L38 +L58 +L279 +R79 +R14 +R86 +L5 +R78 +R31 +L49 +R45 +R634 +R566 +L84 +L16 +R52 +L49 +R11 +L2 +L775 +L61 +L30 +R10 +L55 +R27 +R82 +R25 +L60 +L75 +R51 +L66 +R256 +R856 +R79 +L776 +R11 +L11 +R547 +R53 +R340 +R60 +L45 +R308 +R37 +L11 +L20 +L97 +L72 +R12 +R184 +R45 +R165 +R39 +L55 +R72 +L21 +R59 +R48 +R30 +L98 +L868 +L32 +R24 +R49 +R88 +R95 +R30 +L66 +R44 +R36 +L58 +L22 +L47 +L575 +L66 +R93 +L5 +R63 +R546 +L647 +L166 +R273 +R95 +R57 +L95 +R74 +R38 +L38 +L89 +L45 +R45 +R289 +R12 +R113 +L75 +L71 +L484 +R27 +R32 +R73 +L9 +R82 +R57 +R43 +R63 +R97 +R40 +R71 +R33 +R3 +L5 +R1 +L54 +R14 +L63 +R378 +R707 +L16 +R889 +L58 +L62 +L62 +L70 +R72 +L223 +L876 +R34 +R887 +R30 +L30 +R83 +R56 +L839 +L62 +R738 +L19 +L59 +L98 +R26 +R62 +R20 +R77 +L99 +L51 +L98 +R349 +L86 +R66 +L66 +L676 +R859 +L83 +R45 +L989 +R190 +L88 +R95 +L999 +L18 +R64 +R16 +R884 +L98 +R282 +L49 +L35 +L277 +L23 +R43 +L646 +R37 +R66 +L22 +R5 +L20 +R68 +R69 +L33 +L68 +R301 +L928 +R82 +R65 +R11 +R20 +L50 +L44 +R36 +L5 +L139 +L87 +R8 +L469 +R135 +L35 +R57 +L575 +L82 +L95 +L5 +R36 +R64 +R92 +L692 +R428 +L28 +R80 +R11 +L99 +R767 +R41 +R62 +L62 +L540 +L81 +R94 +L58 +R85 +R92 +L77 +L48 +L67 +R547 +R53 +R72 +R49 +L21 +R7 +R99 +L6 +R127 +R35 +R95 +L72 +L77 +L81 +R73 +R64 +L60 +L35 +L56 +R38 +L8 +R80 +R93 +R98 +R94 +L8 +L88 +L12 +L56 +L44 +R82 +R18 +R72 +L885 +L90 +R3 +L820 +R590 +L197 +R788 +R39 +L46 +L39 +R85 +R83 +R17 +L781 +R81 +L55 +R64 +R528 +L47 +L889 +R99 +L41 +R41 +L76 +L24 +R99 +L63 +R78 +R39 +L57 +R23 +L819 +L97 +L3 +L79 +R22 +R57 +L13 +R69 +R44 +R119 +L847 +R61 +L33 +L16 +R16 +L69 +R89 +L20 +R60 +R88 +R40 +L86 +L57 +R55 +R29 +L31 +L19 +L54 +L95 +L43 +R257 +R56 +R47 +R21 +R38 +R50 +R844 +R17 +L403 +R86 +R35 +L25 +L30 +L19 +R626 +R813 +R31 +R569 +L14 +L38 +R917 +R62 +R73 +L1 +R108 +R42 +L49 +L20 +R20 +R115 +R85 +R63 +L63 +L880 +R99 +R71 +R10 +L56 +L44 +L1 +L27 +L72 +L73 +R17 +R6 +R50 +R96 +L79 +L17 +L79 +L21 +R72 +L72 +R171 +R27 +L48 +L150 +R12 +L12 +R199 +R21 +R62 +R44 +R64 +R492 +R52 +R53 +L28 +R41 +R92 +R8 +L503 +R3 +L55 +R744 +R615 +L406 +L145 +L272 +L681 +L132 +R632 +R23 +L34 +R32 +L337 +L84 +L15 +L848 +L37 +L95 +R95 +L84 +L33 +L83 +R771 +R52 +R60 +L58 +R51 +L56 +L20 +R8 +R92 +R75 +L275 +L25 +R25 +R70 +R18 +R9 +R3 +R91 +R856 +L96 +L251 +L629 +R29 +R52 +L429 +R296 +L479 +R54 +R43 +L60 +L477 +R71 +R51 +L22 +L66 +R866 +L79 +L621 +L42 +R58 +R857 +R327 +L510 +L63 +L50 +L64 +L52 +R39 +L73 +L727 +L15 +R71 +L85 +L271 +R88 +L88 +L29 +R66 +R63 +R49 +L15 +L15 +R81 +R48 +L93 +R45 +L21 +L979 +L39 +R21 +R673 +L55 +L19 +L349 +R41 +L36 +R63 +R66 +R466 +L32 +R51 +R49 +R893 +L93 +R25 +L66 +R22 +L781 +L60 +R6 +R53 +R99 +R9 +L350 +L63 +R6 +R50 +R50 +R89 +R89 +L53 +L25 +L4 +L56 +L78 +L62 +R72 +L74 +L89 +R91 +L73 +L61 +L749 +L746 +L55 +R87 +L37 +R60 +L4 +L22 +R213 +L13 +L27 +R82 +R64 +R531 +R937 +R13 +L53 +L4 +L731 +L12 +L772 +L28 +L22 +L88 +R10 +R59 +L59 +L42 +L66 +R69 +L61 +L11 +L27 +L62 +R240 +L51 +L89 +R256 +R21 +L37 +R48 +R146 +R12 +L7 +L60 +L505 +R11 +L85 +L98 +R746 +R24 +L98 +R211 +L694 +L60 +L11 +L20 +L92 +R92 +L601 +L80 +L71 +L342 +R94 +L14 +L486 +R2 +L2 +R7 +R8 +R1 +L16 +L82 +L25 +R6 +L6 +L58 +R40 +R46 +R79 +L67 +R55 +R88 +L841 +R92 +R61 +R89 +L83 +R48 +L63 +L86 +R67 +L60 +L61 +L39 +R75 +R77 +R48 +R66 +L35 +L831 +R88 +R70 +R52 +L909 +L1 +L66 +R80 +R99 +R31 +L73 +L71 +L18 +R18 +L24 +L51 +R406 +R592 +L43 +L13 +R102 +R25 +L48 +L221 +R35 +R73 +L76 +R85 +L742 +R41 +L41 +R74 +R72 +L20 +R74 +L26 +L73 +L1 +R30 +L725 +L5 +L57 +L535 +L87 +L21 +L73 +R29 +L54 +L2 +R27 +R73 +L77 +L31 +L92 +R95 +L96 +R60 +L59 +R3 +R19 +R33 +L55 +L841 +L59 +L13 +R13 +L33 +R933 +L97 +L147 +R55 +R67 +R22 +L884 +R84 +L10 +L71 +R466 +R15 +R69 +R31 +L8 +R8 +L84 +L75 +R88 +R71 +R65 +R35 +L79 +R79 +L132 +R457 +L17 +R37 +L238 +R93 +R37 +L37 +R99 +R89 +L828 +L43 +L91 +R74 +L93 +R90 +R38 +R385 +R80 +R572 +R550 +L22 +R463 +L37 +L979 +L60 +R13 +R299 +L12 +L12 +L75 +R90 +R71 +R65 +L57 +R85 +R46 +R188 +L588 +R86 +R148 +R792 +R74 +R56 +R44 +L874 +R96 +R578 +L48 +R48 +L50 +L17 +R81 +L814 +L5 +R5 +R43 +L56 +R49 +L36 +L65 +R52 +L66 +R11 +L32 +L10 +L473 +L85 +R99 +L90 +R59 +L66 +R38 +L19 +R84 +R20 +L57 +L561 +L239 +L61 +R61 +L5 +L811 +R14 +L482 +L66 +R610 +L64 +L96 +R85 +L75 +R90 +R134 +R13 +L647 +L529 +L71 +R917 +L79 +R44 +L28 +L26 +R72 +R27 +R99 +L52 +L53 +R79 +L39 +L53 +L1 +R38 +L63 +L57 +R94 +L4 +R56 +R31 +L959 +R52 +R82 +R418 +R5 +L690 +R96 +L6 +R6 +L71 +L98 +R329 +L966 +L64 +L36 +R66 +L682 +R64 +L48 +R99 +L66 +L1 +L632 +R41 +L563 +L70 +L8 +L367 +L33 +L30 +L898 +L61 +L159 +L46 +R55 +L61 +R99 +L99 +L7 +L93 +L962 +L68 +R69 +R81 +L360 +R40 +L42 +R10 +L80 +L88 +R95 +L120 +R225 +R31 +L3 +L22 +R23 +L329 +L444 +R793 +L29 +L65 +L55 +L96 +R58 +L862 +R84 +L37 +L47 +R89 +L89 +L821 +R64 +R957 +R39 +L63 +R15 +L90 +R7 +R18 +R596 +R878 +L33 +L67 +R88 +L22 +L66 +R98 +L88 +R94 +L39 +R35 +R95 +R59 +R41 +L947 +R86 +L70 +L32 +L87 +R67 +L58 +R52 +R847 +R47 +L29 +L45 +L826 +L72 +R76 +R96 +R19 +L66 +R47 +L77 +L97 +R36 +L14 +R42 +R52 +L60 +R18 +L13 +R720 +R793 +L167 +R831 +L10 +L97 +L32 +L22 +L79 +R76 +R30 +L10 +R18 +L21 +R85 +R98 +L71 +R38 +L67 +R443 +L58 +R15 +R66 +L49 +L70 +L47 +R25 +L36 +L489 +L81 +R81 +R89 +R992 +R53 +R66 +R15 +R585 +L6 +L94 +R93 +R7 +L37 +L361 +L3 +R1 +R131 +L34 +R72 +L32 +R827 +L97 +L97 +L148 +R52 +R26 +L62 +L38 +R96 +L374 +R79 +R67 +L85 +R17 +R3 +L23 +L32 +R52 +L344 +L56 +R55 +R93 +R3 +R949 +L258 +R249 +R9 +L16 +L76 +R56 +R71 +L4 +L31 +L750 +R217 +L67 +R94 +R6 +R838 +R6 +R56 +R38 +L20 +R77 +L58 +L98 +R27 +L89 +L47 +L34 +L96 +R53 +R35 +L88 +R488 +R37 +R75 +L17 +L18 +L39 +R40 +L3 +L63 +R70 +L415 +L792 +L46 +R84 +L26 +R141 +R655 +L87 +R31 +R90 +L9 +L991 +L76 +L29 +L12 +R39 +R73 +R42 +L42 +L82 +L248 +R30 +L61 +L39 +L570 +R66 +L74 +L91 +L31 +R77 +R23 +R37 +L526 +R92 +R97 +L98 +L97 +R50 +L60 +R60 +L80 +R825 +L2 +R902 +R11 +L11 +R50 +R689 +R23 +L514 +R4 +R76 +R72 +L97 +R5 +L60 +L48 +L34 +R34 +R47 +R975 +L22 +L10 +L50 +L40 +L46 +L93 +R39 +L15 +L6 +R24 +L355 +L48 +L28 +R28 +R89 +R11 +R18 +R252 +L63 +R93 +R59 +L59 +R99 +R25 +R39 +R72 +L35 +R17 +L17 +L4 +L48 +R34 +L82 +R99 +L70 +L29 +R54 +R23 +R54 +L31 +L20 +R24 +R79 +R26 +R43 +R461 +R87 +R811 +L77 +R51 +R15 +L56 +L44 +R57 +R16 +R98 +R55 +L12 +L8 +R94 +R36 +R64 +L382 +R82 +R725 +R18 +L62 +R24 +R248 +R747 +L83 +L64 +R27 +R997 +L877 +R2 +L2 +R66 +L66 +L25 +R18 +L858 +R39 +L68 +L42 +L64 +L45 +L86 +R92 +R39 +L85 +R885 +R32 +L98 +L337 +L15 +L25 +R93 +L50 +L20 +L80 +L81 +R20 +L39 +R49 +R97 +R924 +L70 +L48 +R76 +L27 +L401 +L49 +L46 +R24 +R71 +R46 +L46 +L65 +L51 +R88 +L963 +L9 +L35 +R92 +L69 +R546 +L66 +R240 +R38 +R25 +L28 +L43 +L2 +L98 +R23 +R578 +L88 +R79 +R52 +R56 +R29 +L64 +L51 +L14 +R79 +R21 +L49 +R90 +R39 +R20 +L35 +R935 +L78 +R44 +L20 +L28 +L165 +L37 +R19 +R46 +R75 +L85 +R84 +L22 +L33 +L79 +L43 +R16 +L94 +R39 +L71 +L58 +R90 +R298 +R33 +R29 +R40 +L92 +L30 +L540 +L27 +R868 +L71 +L708 +R84 +L62 +L905 +L66 +R49 +L81 +R75 +L94 +L56 +R143 +R5 +L58 +R58 +R12 +R20 +R76 +R72 +L498 +R16 +R10 +L14 +R14 +L41 +L59 +R63 +R52 +R785 +R14 +R186 +L5 +R95 +L24 +L89 +R68 +L26 +R45 +L64 +R64 +R29 +L66 +R273 +R50 +L50 +R62 +L18 +R44 +L45 +R57 +R28 +L83 +R855 +L62 +L238 +R21 +R99 +L20 +R671 +R29 +R311 +R70 +L49 +L13 +L28 +L91 +L33 +R68 +R65 +L58 +R46 +L588 +L47 +R847 +R52 +L10 +R758 +L84 +L16 +R45 +L9 +R64 +R59 +L59 +L84 +L60 +R44 +R55 +L54 +L1 +R18 +L18 +R532 +R55 +R413 +R47 +R80 +L505 +R78 +R89 +L89 +L57 +L43 +R92 +L92 +L28 +R70 +L42 +L902 +R40 +R96 +R38 +R10 +R18 +R35 +L74 +L14 +R61 +R992 +R53 +R1 +R8 +L62 +R17 +R10 +R68 +L50 +L45 +L148 +L30 +L122 +R82 +R18 +L31 +R31 +R30 +R570 +L43 +L57 +L74 +L44 +R18 +L91 +L23 +L48 +L31 +L7 +R577 +R32 +L11 +R26 +R76 +L60 +R47 +L61 +R468 +R6 +R85 +L85 +L41 +R53 +L54 +R919 +L70 +R593 +R19 +R47 +L96 +L98 +R28 +R19 +R81 +R633 +L133 +R22 +R18 +L627 +L81 +L31 +R86 +R90 +L52 +R475 +R945 +R13 +R925 +L83 +R39 +R61 +R377 +R22 +L385 +R66 +L65 +R85 +R62 +R838 +L90 +L10 +L70 +R70 +L35 +R35 +L28 +L840 +L249 +R317 +L6 +L294 +L791 +L97 +L41 +L53 +L18 +L54 +R34 +L80 +R667 +R91 +L42 +R90 +R94 +R66 +L482 +R88 +L94 +R37 +L76 +L91 +L48 +R62 +R38 +L71 +L19 +L710 +L93 +R93 +R78 +R96 +L24 +R833 +R17 +L279 +R79 +L9 +R9 +L63 +L16 +L834 +L687 +L72 +R72 +L93 +L90 +L84 +L4 +L74 +L304 +R49 +L643 +R84 +R89 +R63 +L201 +L504 +L37 +R49 +L88 +L50 +R138 +L6 +L519 +R87 +R538 +L8 +R898 +L650 +R60 +L93 +L95 +R388 +L64 +R6 +R80 +R23 +R40 +L824 +L36 +L796 +L88 +R59 +L61 +L22 +L48 +L48 +L21 +R49 +R82 +R69 +R975 +L75 +R18 +R90 +R92 +L63 +R63 +L7 +L393 +L914 +R43 +R22 +R53 +L23 +L603 +R274 +L552 +R76 +R70 +L46 +R88 +R11 +R231 +R70 +R716 +L131 +R60 +R16 +R39 +L17 +R40 +R96 +R281 +R5 +L5 +L28 +L56 +R24 +L40 +L96 +L4 +R4 +L4 +R28 +R72 +R50 +L96 +L93 +L761 +L36 +L469 +L18 +L49 +L128 +L19 +L87 +L41 +L12 +L38 +L64 +L739 +L30 +L47 +R244 +L32 +L35 +R71 +R65 +L685 +L706 +R909 +R38 +L49 +L93 +L93 +R99 +R53 +L4 +L325 +L62 +R47 +R972 +L37 +L95 +L77 +L69 +R98 +R8 +R35 +R92 +R8 +L480 +R11 +R34 +R57 +L57 +R58 +L7 +L26 +L72 +R82 +R23 +R20 +R230 +R49 +L22 +L81 +L19 +L903 +R3 +L32 +L68 +L18 +R870 +L83 +R24 +L628 +L65 +R49 +R14 +R79 +R22 +R56 +L74 +L86 +R40 +L14 +R77 +L489 +L848 +R12 +L38 +R180 +R81 +R385 +L81 +L49 +R84 +L50 +R850 +R69 +L40 +L38 +R29 +R770 +L61 +R76 +L56 +R51 +R38 +R13 +R68 +L911 +L65 +R957 +R28 +R72 +L52 +L348 +L48 +R966 +L18 +L53 +L51 +R743 +L39 +L997 +L3 +R811 +R70 +R19 +R24 +L24 +L22 +L852 +R74 +R47 +R98 +L45 +R35 +R579 +L39 +L90 +L616 +L68 +R4 +R35 +R10 +L53 +L3 +R606 +R62 +R64 +R74 +R92 +L36 +R44 +L73 +R73 +R50 +L50 +R2 +L9 +R707 +L56 +L44 +L86 +R86 +R24 +L78 +L93 +L53 +R37 +R76 +R587 +R286 +L70 +R76 +R8 +R95 +L859 +L36 +R79 +L25 +R32 +L386 +L64 +L33 +L46 +L651 +L34 +L72 +R118 +L51 +L11 +L65 +L15 +R186 +R38 +L49 +L32 +L19 +L22 +L9 +R731 +L73 +L871 +L43 +L3 +R479 +R55 +R50 +R6 +L62 +L38 +R76 +R786 +R38 +L83 +L17 +R713 +L614 +R71 +R93 +L63 +L60 +R67 +R93 +L629 +L37 +L34 +L91 +L909 +L642 +R242 +R192 +R2 +L94 +L70 +L30 +R49 +L80 +L8 +L24 +R97 +R66 +L98 +R576 +L178 +L94 +R74 +L380 +R53 +L51 +R456 +L58 +R61 +R39 +L6 +L75 +L619 +R17 +L96 +R51 +R19 +R30 +R79 +L347 +L77 +L76 +R11 +L11 +L30 +R230 +R93 +L94 +L79 +L580 +L24 +R51 +L59 +L8 +R39 +L50 +R33 +L84 +R62 +R92 +L10 +L82 +L40 +L60 +L103 +R37 +L634 +R82 +R334 +R84 +L72 +L528 +R4 +L4 +R89 +R55 +L44 +R47 +R691 +R72 +L10 +R75 +L16 +R41 +L77 +R66 +L7 +R96 +R81 +L59 +R48 +R469 +L56 +L17 +R108 +R48 +R75 +L61 +L90 +R74 +R2 +L20 +L259 +L21 +R47 +R453 +R118 +L67 +R63 +L472 +L96 +R54 +L6 +R6 +L66 +L34 +L89 +L11 +L865 +L75 +L60 +L16 +R36 +R80 +L97 +L55 +R836 +L1 +R17 +L41 +L59 +L57 +L43 +L63 +R15 +L34 +L51 +R75 +R58 +L46 +L54 +L61 +L39 +R20 +L720 +L97 +R98 +L76 +R81 +L692 +R76 +L16 +L260 +R86 +L72 +L28 +L601 +L499 +R512 +L79 +R76 +R691 +L1 +L63 +R95 +L26 +L38 +L16 +L11 +L69 +L59 +L8 +R96 +R11 +R89 +L17 +L83 +L531 +R531 +R94 +L94 +R867 +R50 +L117 +R430 +R96 +R62 +R12 +L24 +L76 +L232 +R32 +R7 +R193 +L51 +R34 +R17 +L37 +R37 +L44 +L53 +R30 +L91 +L34 +R92 +L96 +R10 +R920 +L86 +R50 +L59 +L39 +R11 +L89 +R48 +L70 +R63 +L563 +L72 +R272 +R92 +L22 +L10 +L60 +L16 +R71 +L14 +R39 +R76 +R8 +R968 +R68 +R43 +R30 +L73 +L49 +L876 +R25 +L21 +R84 +L563 +R78 +L1 +L79 +L547 +R49 +R20 +R74 +R776 +L85 +L779 +R83 +R11 +R43 +R57 +R552 +L151 +R58 +R23 +R18 +R72 +L72 +R116 +R79 +R42 +L37 +L96 +L4 +L58 +R781 +R77 +L551 +R9 +R85 +R405 +R477 +R14 +R58 +R51 +R47 +L671 +R503 +R32 +R96 +L42 +R87 +L120 +R67 +L246 +R25 +R74 +R65 +R21 +L25 +R32 +L85 +L72 +L436 +R45 +L115 +L352 +L87 +L99 +R930 +L94 +R29 +R43 +R57 +R77 +R66 +R441 +L33 +L64 +R175 +L676 +R449 +R27 +R81 +L61 +L97 +R58 +L65 +L91 +R310 +R46 +R25 +L5 +L63 +L6 +R14 +R35 +R22 +R90 +L44 +L749 +R58 +L77 +R77 +L97 +L669 +R959 +R30 +L97 +R97 +L169 +L90 +R61 +L94 +L8 +L7 +L48 +R55 +L52 +R452 +L63 +R63 +R88 +L97 +L291 +L30 +L388 +R46 +R27 +R57 +R48 +R25 +R15 +R85 +L85 +L37 +R79 +L949 +R12 +L39 +R34 +L94 +R371 +R288 +R35 +R36 +L36 +R6 +R97 +R41 +R56 +R74 +L274 +L893 +R80 +L87 +R44 +R299 +L3 +R86 +R74 +R1 +L30 +L63 +L8 +L79 +R5 +R74 +R60 +R27 +R13 +R77 +L73 +R77 +L305 +R424 +R12 +R90 +R860 +R219 +L62 +L82 +R63 +R38 +L982 +R44 +R85 +R88 +L36 +R63 +R32 +L70 +L284 +R52 +R54 +R16 +L13 +L6 +L208 +L60 +L21 +L92 +L64 +R118 +R7 +R653 +R20 +L269 +L43 +R35 +L174 +L83 +R51 +R60 +L11 +L39 +R39 +R83 +R17 +R85 +L47 +R462 +L71 +L74 +R4 +R86 +R22 +L67 +R65 +L588 +L77 +R80 +L80 +L7 +L93 +L94 +R728 +L401 +L6 +L157 +R835 +R95 +L450 +R24 +R26 +L58 +L24 +L78 +R60 +R818 +R22 +R60 +R169 +L17 +R248 +R29 +R71 +L93 +L413 +L24 +R903 +R759 +L65 +L567 +L67 +L42 +R9 +R78 +L87 +R993 +R26 +L310 +R17 +R83 +R327 +L27 +R44 +R19 +R85 +L94 +L24 +L31 +R1 +R6 +R78 +L11 +R27 +R314 +L22 +R92 +R12 +R4 +R39 +L36 +L285 +L42 +L75 +L42 +L989 +R3 +L822 +R49 +L958 +R76 +R82 +L369 +L56 +L811 +R8 +L72 +R74 +R82 +L256 +L15 +R50 +R80 +R85 +R562 +R43 +R95 +R833 +R19 +R664 +R22 +L98 +L40 +L93 +R593 +L95 +R52 +L15 +R13 +R82 +R667 +R39 +L10 +L33 +L40 +R40 +L27 +L28 +L14 +R61 +L192 +R63 +L763 +R47 +R77 +L988 +L41 +R319 +L14 +L682 +R82 +R297 +L97 +L63 +L37 +R76 +L27 +R51 +R74 +R126 +R39 +L39 +L55 +R55 +R65 +L365 +L40 +R92 +R71 +R77 +L43 +L95 +L640 +L322 +L99 +L75 +R86 +R103 +R33 +R98 +R5 +R49 +L86 +L799 +L466 +L18 +L87 +L44 +R62 +L88 +L74 +L754 +R54 +L993 +L38 +R281 +L5 +R84 +R71 +L83 +L17 +R75 +R15 +R85 +R88 +R99 +L62 +L37 +L563 +R63 +R631 +L73 +L58 +R59 +L19 +R46 +R58 +L807 +R74 +L74 +R2 +L623 +R121 +L490 +R18 +R18 +L60 +L83 +L66 +L33 +R96 +R68 +R59 +L3 +L41 +R66 +L16 +L33 +R84 +L84 +R18 +L37 +R19 +L992 +L8 +R28 +R207 +L181 +L58 +R304 +R2 +L30 +R28 +R25 +L20 +R95 +R97 +R48 +R27 +R581 +L85 +L6 +L62 +L54 +L642 +L4 +L153 +R48 +L95 +R94 +L15 +L779 +L31 +L69 +R43 +L43 +R11 +L367 +R56 +R875 +R25 +R10 +L710 +L29 +R81 +L2 +L89 +R25 +R14 +L50 +R50 +R8 +L54 +R91 +R55 +R60 +R240 +L60 +L42 +R98 +R74 +L51 +R26 +R16 +L81 +L38 +R55 +L897 +L18 +L139 +R32 +R25 +L35 +L15 +L54 +R61 +L16 +R59 +L84 +R81 +L97 +R537 +L64 +L733 +R50 +L94 +L52 +R56 +L33 +R33 +R89 +L789 +L44 +L34 +R14 +R39 +L75 +R62 +L73 +R11 +R92 +L34 +L4 +R51 +R55 +R14 +R65 +L831 +R63 +R18 +R739 +L59 +R31 +L102 +L71 +R33 +R859 +R881 +L31 +R77 +L96 +L21 +L49 +L14 +R50 +R5 +R410 +L38 +R57 +L150 +R98 +R140 +L737 +R92 +L93 +R769 +R31 +L40 +R62 +R74 +L18 +R22 +L804 +R5 +L1 +R93 +R9 +R98 +R2 +R274 +L21 +L702 +R47 +R56 +R35 +L83 +L59 +R22 +R29 +R8 +L8 +L5 +R5 +R606 +R966 +R28 +L11 +L82 +L7 +L61 +L39 +L848 +R48 +R25 +R75 +R88 +L57 +R69 +R14 +L14 +L63 +L37 +L64 +R98 +L34 +R64 +R89 +R94 +L89 +R42 +L70 +L9 +R25 +R75 +R567 +R51 +L39 +L724 +L76 +L81 +L90 +L41 +R18 +L86 +R680 +L87 +R87 +R417 +R83 +L29 +L7 +L933 +L31 +R58 +R42 +L66 +R92 +L26 +L69 +L66 +R50 +L52 +L63 +R41 +R13 +L54 +L10 +R876 +R34 +L86 +R50 +L51 +L13 +L72 +L7 +L106 +L3 +L96 +L216 +L182 +L18 +L19 +L64 +R83 +L91 +L46 +R42 +R99 +L4 +L43 +L24 +L51 +R818 +R58 +L68 +L34 +R44 +L895 +R320 +R881 +R24 +L72 +R42 +R46 +R54 +R67 +R33 +R763 +R61 +R776 +R57 +R78 +L35 +R23 +R23 +L89 +R43 +L81 +L73 +R46 +R8 +R99 +L99 +R929 +L29 +R160 +L60 +R99 +L99 +R91 +L53 +L85 +L87 +R785 +R315 +R82 +R320 +R87 +L26 +L540 +L128 +R39 +L869 +L66 +L65 +R55 +L355 +R64 +L63 +R399 +L4 +L96 +R937 +R292 +L238 +R209 +R81 +L212 +R26 +L95 +L421 +R21 +R9 +R935 +R85 +R63 +L180 +L12 +L75 +L97 +R472 +L279 +L7 +R386 +L2 +L98 +L462 +L182 +L82 +R49 +L23 +L699 +L97 +R10 +L44 +R153 +L67 +R44 +L64 +R70 +L6 +R82 +R46 +R72 +L46 +R482 +L76 +L875 +L85 +R80 +R20 +R87 +R13 +L85 +L240 +L75 +R47 +R53 +R92 +R71 +L72 +L73 +L418 +L31 +L8 +L72 +L38 +L51 +R60 +R5 +R35 +R48 +L48 +L56 +R43 +L119 +R32 +R83 +R17 +R47 +L85 +R438 +R11 +L875 +R64 +R49 +R777 +R13 +R61 +L21 +L62 +L42 +R25 +L80 +L85 +L14 +R79 +L4 +R81 +L52 +L25 +R52 +R7 +R366 +L25 +R1 +L31 +R33 +R557 +R22 +R53 +R51 +L44 +R22 +L88 +R4 +L80 +L90 +R690 +R20 +R37 +R143 +R39 +L98 +L41 +L48 +R48 +L2 +R93 +L91 +L74 +R774 +L18 +R57 +L668 +L34 +R2 +L40 +L199 +R69 +R31 +R28 +L28 +R45 +L85 +L478 +R98 +L9 +L22 +L371 +L78 +L407 +L93 +R615 +R3 +R431 +L49 +R819 +R97 +L90 +L26 +L87 +L13 +R50 +L22 +L56 +R36 +L8 +R10 +L10 +L49 +R49 +R10 +R90 +L55 +L45 +R82 +L28 +L367 +R26 +L543 +L40 +L37 +L85 +R92 +L689 +R29 +R86 +L221 +R16 +R33 +L54 +L36 +L6 +L66 +R97 +R95 +L684 +L98 +L2 +R1 +R199 +R21 +R379 +L2 +R2 +L4 +R604 +R66 +R67 +L933 +R827 +R66 +R7 +R47 +R53 +L61 +L39 +R7 +R74 +L81 +R584 +R16 +R40 +R50 +R10 +L52 +R52 +L621 +R64 +L8 +R91 +L126 +R18 +L83 +R97 +R62 +L855 +L22 +R83 +L512 +R79 +L49 +L98 +L51 +L69 +R29 +R383 +L53 +L459 +L29 +L26 +L35 +L10 +L7 +R7 +R42 +R58 +L46 +L661 +L74 +R86 +L71 +R81 +R253 +R32 +L39 +R19 +R51 +L75 +L63 +R7 +R725 +R7 +R68 +R576 +L76 +R53 +L54 +R91 +L90 +R20 +L20 +R67 +L60 +R14 +R379 +L693 +L7 +L4 +L19 +R7 +R84 +R18 +R87 +L10 +R34 +R13 +R76 +R41 +L134 +L93 +L935 +L65 +L21 +R24 +L17 +R913 +R1 +L59 +R73 +L14 +R91 +R109 +R98 +R11 +R72 +R519 +L70 +R93 +L27 +L96 +L30 +L121 +L49 +R35 +R65 +L85 +R6 +R69 +L94 +R404 +R52 +L131 +L319 +R98 +R2 +L502 +L86 +L414 +L89 +R89 +L51 +R41 +L187 +R88 +R109 +L27 +R27 +R85 +R366 +L51 +L92 +L8 +L33 +R433 +R946 +L47 +R72 +R495 +L87 +R89 +R37 +R52 +L57 +R86 +R35 +R96 +L74 +L72 +L555 +L36 +L45 +R49 +L209 +R343 +L26 +L36 +R84 +R60 +L18 +L84 +R710 +L8 +L66 +R66 +R555 +R45 +R38 +R662 +L18 +L82 +L17 +L83 +R84 +R16 +L43 +L22 +R90 +L272 +R47 +L43 +L57 +R33 +R97 +R970 +L13 +R11 +R802 +R34 +R75 +L569 +R83 +L23 +R86 +R4 +R4 +R6 +R36 +R68 +R98 +R21 +R830 +R55 +R83 +L702 +R11 +L96 +R42 +R54 +R22 +L48 +L7 +L67 +R82 +R846 +R7 +R713 +R475 +R16 +R61 +L14 +L398 +R12 +L65 +R65 +L64 +R64 +R92 +R16 +R53 +R72 +R42 +R28 +L3 +L91 +R391 +R30 +R270 +R573 +R40 +R598 +L31 +R32 +L24 +L83 +L434 +R72 +R86 +R71 +R41 +L41 +L91 +R71 +R20 +R31 +R10 +R56 +L97 +L3 +R12 +L9 +R69 +R831 +L80 +L37 +R24 +R51 +L59 +L499 +L53 +L91 +L71 +R24 +R9 +R169 +L187 +R66 +L64 +R685 +R13 +R17 +L30 +R13 +L3 +L79 +R80 +R21 +L98 +L52 +L759 +R347 +R90 +L7 +R5 +L45 +R16 +L67 +L719 +R8 +L39 +L899 +L861 +R187 +R74 +R49 +L49 +R81 +L66 +R82 +R954 +L35 +L34 +R105 +R113 +R3 +L70 +L48 +R68 +L45 +L28 +R820 +L62 +R62 +R524 +R73 +L92 +R96 +R10 +L38 +L73 +L55 +L34 +R822 +L45 +L88 +L19 +R19 +L67 +R98 +L43 +L36 +R48 +R83 +R70 +R45 +R502 +L12 +L365 +L23 +R805 +R95 +L83 +L20 +R3 +R3 +R72 +L75 +R27 +L17 +R548 +R42 +L8 +R42 +R5 +L65 +L2 +L83 +R46 +R165 +L933 +L96 +L30 +R59 +R92 +R66 +R60 +L18 +L97 +L3 +L53 +L281 +R23 +L769 +R98 +L74 +R61 +L79 +L85 +L82 +L4 +R45 +R130 +R70 +L99 +R71 +R84 +L87 +L45 +L24 +L4 +R87 +L88 +L42 +R47 +R22 +R84 +L73 +L33 +R11 +L50 +L55 +L6 +R72 +L56 +R93 +L209 +R2 +L352 +L14 +R7 +R99 +L534 +R69 +L1 +R24 +L70 +R70 +R54 +L16 +L90 +R26 +L74 +L81 +L912 +L7 +R53 +R99 +L52 +R1 +L1 +L150 +R30 +R20 +L77 +L97 +L74 +L56 +L38 +L8 +L50 +L63 +L9 +L88 +L97 +L75 +R14 +R89 +L71 +L62 +L38 +R46 +R40 +R14 +R29 +L29 +L993 +R491 +R598 +L96 +R11 +R859 +R22 +R34 +L26 +L43 +R939 +R72 +L96 +R60 +L1 +L23 +R24 +R81 +R87 +R17 +R75 +L82 +R81 +L62 +R835 +L7 +L57 +L28 +R9 +L9 +L25 +R640 +R13 +L63 +L637 +R71 +L86 +L29 +R644 +L53 +R62 +R98 +L7 +R43 +R49 +L92 +R53 +R47 +R17 +R45 +L62 +L251 +R51 +R2 +L2 +L83 +R383 +R98 +R502 +R99 +L281 +R97 +R85 +R4 +L912 +L92 +L8 +L92 +R238 +L502 +L61 +R325 +L75 +R72 +L77 +R10 +L30 +L88 +L95 +R83 +R55 +R56 +R5 +L89 +L127 +L3 +L97 +R259 +L59 +L498 +R198 +R9 +L63 +L446 +L36 +R33 +L597 +R46 +R7 +R85 +R62 +L334 +R34 +L871 +L315 +R61 +R58 +L33 +R73 +R927 +L44 +L516 +L49 +R9 +L10 +L438 +L3 +L47 +R72 +R826 +R927 +R34 +R643 +L4 +L34 +R34 +L42 +R93 +R14 +L61 +R21 +R75 +L59 +R74 +L15 +L3 +L48 +L22 +R96 +R732 +L317 +R16 +R24 +L68 +R90 +R70 +L47 +L23 +R43 +L43 +R32 +L32 +L76 +L11 +L7 +R94 +R844 +R43 +L77 +L110 +R75 +R25 +R2 +R98 +R65 +L41 +R76 +L778 +R78 +L59 +L41 +L45 +R845 +R4 +L4 +L12 +L988 +L5 +R37 +L632 +R17 +R40 +L383 +R93 +L131 +L42 +R47 +L78 +R43 +L106 +R879 +L532 +L47 +L706 +L49 +R978 +L23 +R57 +R57 +L83 +L10 +L21 +L66 +L14 +L20 +R65 +R35 +L69 +L69 +R238 +L803 +R21 +L93 +R897 +L23 +R1 +L10 +R310 +R77 +L77 +L256 +L381 +R12 +L553 +R13 +R65 +R36 +L85 +R49 +L18 +R41 +L56 +L45 +R78 +R377 +L92 +R2 +L67 +R80 +R427 +L27 +L6 +R52 +L28 +R50 +L63 +L5 +L79 +L131 +L4 +L7 +R35 +L214 +L121 +R3 +L29 +L696 +R74 +R74 +R95 +L50 +R45 +R5 +L19 +L118 +R99 +L96 +L98 +L31 +L94 +L25 +L293 +R275 +L38 +R838 +L90 +R81 +L91 +L59 +L841 +R53 +L75 +L78 +R78 +R22 +R83 +R64 +R60 +L50 +L77 +R20 +R52 +R14 +L48 +L668 +R30 +L380 +R597 +R887 +R42 +L87 +L39 +L88 +R13 +R728 +R92 +L51 +R897 +R9 +R81 +L95 +R88 +L974 +R35 +L535 +R7 +R10 +R83 +L74 +R66 +R708 +R12 +R513 +R14 +R61 +R98 +R24 +L21 +R327 +L28 +R70 +L70 +L2 +L51 +R75 +R392 +R670 +L938 +R87 +R73 +R94 +R46 +L46 +R69 +R326 +R9 +L952 +L733 +L824 +R33 +R437 +L92 +L43 +L79 +L59 +R66 +L31 +L55 +L972 +R66 +L66 +R70 +R22 +R2 +L24 +L70 +L58 +L6 +R67 +L903 +R97 +R390 +R10 +L97 +R974 +L35 +L65 +L25 +R60 +L9 +L17 +R33 +R48 +L786 +R55 +L79 +R99 +L102 +L21 +R70 +R165 +R65 +L63 +R56 +L123 +L496 +R535 +L439 +L916 +R99 +R556 +L25 +R14 +L36 +L78 +L714 +L77 +L38 +L85 +L301 +L91 +L70 +L905 +L25 +L6 +R98 +L38 +L37 +R354 +L79 +L881 +R76 +L95 +L660 +L26 +L14 +R832 +R84 +L71 +L27 +R82 +R17 +R922 +L35 +L82 +L16 +R16 +R952 +R5 +R29 +L64 +L44 +R47 +R12 +R735 +L94 +R68 +R50 +L18 +L92 +R92 +R65 +L65 +L53 +R53 +L85 +L20 +L81 +L89 +R75 +L92 +R92 +R8 +R354 +L162 +R63 +R37 +L944 +R26 +R18 +L14 +R14 +R57 +L35 +L793 +R71 +L59 +R359 +L42 +L87 +R76 +L47 +R48 +L82 +L66 +R54 +L54 +R72 +R55 +L127 +L553 +R53 +L74 +L106 +R22 +L76 +L16 +L250 +L862 +L206 +L15 +R87 +L740 +R73 +R963 +L64 +L66 +R917 +L98 +R49 +R30 +L18 +R45 +R5 +R88 +R12 +R45 +L45 +R63 +L429 +R37 +L42 +R71 +R266 +R559 +L63 +R33 +L95 +L59 +R159 +R81 +L35 +R25 +L3 +R14 +L82 +L54 +L46 +R99 +R1 +R98 +R2 +R73 +L64 +R10 +R81 +L27 +L21 +L69 +R612 +R91 +R27 +R87 +R309 +R8 +L70 +R42 +R288 +L877 +L16 +L74 +L77 +R60 +R40 +R33 +L66 +L88 +R88 +L41 +L59 +L86 +L96 +L818 +L17 +R85 +L74 +L35 +L28 +R361 +L818 +R80 +L54 +L65 +R69 +L3 +R38 +L539 +R683 +L78 +R53 +L82 +L29 +L24 +L95 +R72 +L41 +R42 +L52 +L21 +L13 +R561 +L63 +R87 +L13 +L47 +R76 +R97 +R62 +L75 +R7 +L407 +R29 +L29 +L45 +L955 +R92 +L11 +L502 +L50 +L18 +L91 +L420 +R930 +R70 +R78 +R22 +R32 +R68 +R546 +L290 +L6 +L15 +R65 +R60 +L99 +R81 +R658 +L768 +L32 +R903 +L67 +R52 +L88 +R99 +L99 +R563 +L63 +L57 +R889 +L359 +L113 +L22 +R34 +L23 +R51 +L10 +R98 +R12 +R35 +R83 +L18 +L63 +L84 +L23 +L84 +L46 +L31 +R303 +R30 +R98 +L93 +R263 +R453 +R77 +L58 +L42 +L97 +L49 +L24 +R81 +R89 +L82 +R959 +R61 +R8 +L288 +R51 +R60 +R37 +R31 +R563 +L42 +L58 +L75 +R77 +L923 +L89 +L64 +L97 +R271 +L14 +L786 +L47 +R47 +L74 +L53 +L863 +R69 +R79 +R16 +L74 +L66 +R366 +L101 +R664 +R7 +R68 +L38 +L82 +L18 +R75 +L99 +L15 +R30 +L91 +L53 +R53 +L589 +L11 +R38 +L32 +R13 +L51 +R497 +R2 +L94 +L92 +L53 +L20 +L10 +R2 +R295 +L238 +L556 +R20 +L37 +L84 +L39 +R72 +L67 +R34 +L49 +L22 +R40 +L69 +L748 +L753 +L99 +R594 +R94 +L13 +L11 +R87 +R46 +L95 +R70 +R28 +R653 +R47 +R567 +L54 +L913 +L769 +R65 +L96 +L7 +L84 +R63 +L554 +L19 +R1 +L21 +R21 +L121 +L210 +R47 +L16 +R90 +R94 +L484 +L63 +R29 +L66 +L563 +R930 +L608 +R41 +R69 +R31 +R84 +R18 +L27 +L75 +R12 +R5 +L60 +L19 +R362 +L62 +R976 +R406 +L90 +R53 +R59 +L42 +R16 +R53 +R50 +L319 +L38 +R67 +R53 +R74 +L56 +R718 +R82 +L33 +L67 +L46 +L654 +L78 +L91 +L407 +L87 +L361 +L76 +R774 +R77 +R49 +L91 +L72 +L37 +R53 +R608 +L61 +R53 +L882 +R39 +R90 +R664 +R22 +R83 +R52 +R34 +R45 +L27 +L98 +R82 +L90 +R57 +L406 +L531 +R87 +R81 +R75 +L17 +L17 +R63 +L59 +L81 +R74 +R7 +R94 +L894 +L60 +L85 +L56 +L55 +L14 +L30 +L9 +L89 +L47 +R45 +L50 +L14 +L36 +L79 +L21 +R97 +L93 +R55 +R41 +L32 +L68 +R32 +R72 +R96 +L50 +R82 +R68 +R8 +L44 +R36 +L89 +R41 +R24 +R15 +R9 +R43 +L24 +R66 +R75 +R40 +L65 +L45 +L55 +L59 +L48 +L28 +R91 +L11 +L80 +R6 +R99 +L61 +L42 +L6 +R91 +R13 +L30 +R30 +L41 +R41 +L97 +R24 +L81 +R54 +L28 +R28 +L23 +R42 +L4 +L17 +R32 +R70 +L72 +L40 +R42 +L10 +L7 +R6 +R48 +L35 +R28 +L14 +R42 +R24 +L5 +L7 +L44 +L30 +L30 +R25 +R37 +R48 +L31 +L18 +L27 +R20 +L15 +R22 +L26 +R23 +L11 +L46 +L25 +R2 +L40 +L40 +L42 +R32 +R17 +R10 +R13 +R2 +L34 +R14 +L24 +L41 +R2 +L41 +R32 +L5 +R23 +L16 +R39 \ No newline at end of file diff --git a/input/day01_test1 b/input/day01_test1 index e69de29..d03fad7 100644 --- a/input/day01_test1 +++ b/input/day01_test1 @@ -0,0 +1,10 @@ +L68 +L30 +R48 +L5 +R60 +L55 +L1 +L99 +R14 +L82 \ No newline at end of file diff --git a/input/day01_test2 b/input/day01_test2 index e69de29..d03fad7 100644 --- a/input/day01_test2 +++ b/input/day01_test2 @@ -0,0 +1,10 @@ +L68 +L30 +R48 +L5 +R60 +L55 +L1 +L99 +R14 +L82 \ No newline at end of file diff --git a/input/day13 b/input/day13 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day13_test1 b/input/day13_test1 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day13_test2 b/input/day13_test2 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day14 b/input/day14 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day14_test1 b/input/day14_test1 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day14_test2 b/input/day14_test2 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day15 b/input/day15 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day15_test1 b/input/day15_test1 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day15_test2 b/input/day15_test2 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day16 b/input/day16 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day16_test1 b/input/day16_test1 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day16_test2 b/input/day16_test2 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day17 b/input/day17 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day17_test1 b/input/day17_test1 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day17_test2 b/input/day17_test2 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day18 b/input/day18 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day18_test1 b/input/day18_test1 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day18_test2 b/input/day18_test2 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day19 b/input/day19 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day19_test1 b/input/day19_test1 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day19_test2 b/input/day19_test2 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day20 b/input/day20 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day20_test1 b/input/day20_test1 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day20_test2 b/input/day20_test2 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day21 b/input/day21 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day21_test1 b/input/day21_test1 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day21_test2 b/input/day21_test2 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day22 b/input/day22 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day22_test1 b/input/day22_test1 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day22_test2 b/input/day22_test2 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day23 b/input/day23 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day23_test1 b/input/day23_test1 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day23_test2 b/input/day23_test2 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day24 b/input/day24 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day24_test1 b/input/day24_test1 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day24_test2 b/input/day24_test2 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day25 b/input/day25 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day25_test1 b/input/day25_test1 deleted file mode 100644 index e69de29..0000000 diff --git a/input/day25_test2 b/input/day25_test2 deleted file mode 100644 index e69de29..0000000 diff --git a/src/main.rs b/src/main.rs index f19220b..3b9e25d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,6 @@ +// Allow dead code for days not yet implemented +#![allow(dead_code)] + mod solutions; mod utils; diff --git a/src/solutions/day01.rs b/src/solutions/day01.rs index 9c6edbc..5cd9d39 100644 --- a/src/solutions/day01.rs +++ b/src/solutions/day01.rs @@ -5,16 +5,16 @@ pub struct Day01 {} impl Solution for Day01 { fn part1( &self, - _input: &mut Vec, + input: &mut Vec, ) -> Result, Box> { - Ok(Box::new("Ready")) + Ok(Box::new(Day01::count_zeros(input, false))) } fn part2( &self, - _input: &mut Vec, + input: &mut Vec, ) -> Result, Box> { - Ok(Box::new("Ready")) + Ok(Box::new(Day01::count_zeros(input, true))) } fn get_day(&self) -> u8 { @@ -22,7 +22,59 @@ impl Solution for Day01 { } } -impl Day01 {} +impl Day01 { + fn count_zeros(input: &Vec, count_passing: bool) -> usize { + // Dial starts at 50 + let mut pos: i64 = 50; + let mut zeros: usize = 0; + + for line in input { + let line = line.trim(); + if line.is_empty() { + continue; + } + + let mut chars = line.chars(); + let dir = chars.next().expect("empty line"); + let dist_str: String = chars.collect::().trim().to_string(); + let dist: i64 = dist_str.parse().expect("invalid distance number"); + + // Count any time that the dial moves past 0. + if count_passing { + // Count all zeros passed during the move + let step = match dir { + 'L' | 'l' => -1, + 'R' | 'r' => 1, + _ => panic!("invalid direction (must start with L or R): {}", dir), + }; + + for _ in 0..dist { + pos = (pos + step).rem_euclid(100); + if pos == 0 { + zeros += 1; + } + } + continue; + } + + // Move directly to the new position + match dir { + 'L' | 'l' => { + pos = (pos - dist).rem_euclid(100); + } + 'R' | 'r' => { + pos = (pos + dist).rem_euclid(100); + } + _ => panic!("invalid direction (must start with L or R): {}", dir), + } + + if pos == 0 { + zeros += 1; + } + } + zeros + } +} /// Test from puzzle input #[cfg(test)] @@ -44,7 +96,7 @@ mod test { .unwrap() .to_string(); - assert_eq!(answer, "Ready"); + assert_eq!(answer, "3"); } #[test] @@ -61,6 +113,6 @@ mod test { .unwrap() .to_string(); - assert_eq!(answer, "Ready"); + assert_eq!(answer, "6"); } } diff --git a/src/solutions/day13.rs b/src/solutions/day13.rs deleted file mode 100644 index 20a3ae8..0000000 --- a/src/solutions/day13.rs +++ /dev/null @@ -1,66 +0,0 @@ -use super::Solution; - -pub struct Day13 {} - -impl Solution for Day13 { - fn part1( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn part2( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn get_day(&self) -> u8 { - 13 - } -} - -impl Day13 {} - -/// Test from puzzle input -#[cfg(test)] -mod test { - use super::*; - use crate::*; - - #[test] - fn part1() { - let challenge = day13::Day13 {}; - - //Complete the Challenge - let answer = challenge - .part1( - utils::get_input(challenge.get_day(), utils::InputType::Test1) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } - - #[test] - fn part2() { - let challenge = day13::Day13 {}; - - //Complete the Challenge - let answer = challenge - .part2( - utils::get_input(challenge.get_day(), utils::InputType::Test2) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } -} diff --git a/src/solutions/day14.rs b/src/solutions/day14.rs deleted file mode 100644 index eee2290..0000000 --- a/src/solutions/day14.rs +++ /dev/null @@ -1,66 +0,0 @@ -use super::Solution; - -pub struct Day14 {} - -impl Solution for Day14 { - fn part1( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn part2( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn get_day(&self) -> u8 { - 14 - } -} - -impl Day14 {} - -/// Test from puzzle input -#[cfg(test)] -mod test { - use super::*; - use crate::*; - - #[test] - fn part1() { - let challenge = day14::Day14 {}; - - //Complete the Challenge - let answer = challenge - .part1( - utils::get_input(challenge.get_day(), utils::InputType::Test1) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } - - #[test] - fn part2() { - let challenge = day14::Day14 {}; - - //Complete the Challenge - let answer = challenge - .part2( - utils::get_input(challenge.get_day(), utils::InputType::Test2) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } -} diff --git a/src/solutions/day15.rs b/src/solutions/day15.rs deleted file mode 100644 index 38322e2..0000000 --- a/src/solutions/day15.rs +++ /dev/null @@ -1,66 +0,0 @@ -use super::Solution; - -pub struct Day15 {} - -impl Solution for Day15 { - fn part1( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn part2( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn get_day(&self) -> u8 { - 15 - } -} - -impl Day15 {} - -/// Test from puzzle input -#[cfg(test)] -mod test { - use super::*; - use crate::*; - - #[test] - fn part1() { - let challenge = day15::Day15 {}; - - //Complete the Challenge - let answer = challenge - .part1( - utils::get_input(challenge.get_day(), utils::InputType::Test1) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } - - #[test] - fn part2() { - let challenge = day15::Day15 {}; - - //Complete the Challenge - let answer = challenge - .part2( - utils::get_input(challenge.get_day(), utils::InputType::Test2) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } -} diff --git a/src/solutions/day16.rs b/src/solutions/day16.rs deleted file mode 100644 index 9c1fe90..0000000 --- a/src/solutions/day16.rs +++ /dev/null @@ -1,66 +0,0 @@ -use super::Solution; - -pub struct Day16 {} - -impl Solution for Day16 { - fn part1( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn part2( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn get_day(&self) -> u8 { - 16 - } -} - -impl Day16 {} - -/// Test from puzzle input -#[cfg(test)] -mod test { - use super::*; - use crate::*; - - #[test] - fn part1() { - let challenge = day16::Day16 {}; - - //Complete the Challenge - let answer = challenge - .part1( - utils::get_input(challenge.get_day(), utils::InputType::Test1) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } - - #[test] - fn part2() { - let challenge = day16::Day16 {}; - - //Complete the Challenge - let answer = challenge - .part2( - utils::get_input(challenge.get_day(), utils::InputType::Test2) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } -} diff --git a/src/solutions/day17.rs b/src/solutions/day17.rs deleted file mode 100644 index 2f7dba5..0000000 --- a/src/solutions/day17.rs +++ /dev/null @@ -1,66 +0,0 @@ -use super::Solution; - -pub struct Day17 {} - -impl Solution for Day17 { - fn part1( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn part2( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn get_day(&self) -> u8 { - 17 - } -} - -impl Day17 {} - -/// Test from puzzle input -#[cfg(test)] -mod test { - use super::*; - use crate::*; - - #[test] - fn part1() { - let challenge = day17::Day17 {}; - - //Complete the Challenge - let answer = challenge - .part1( - utils::get_input(challenge.get_day(), utils::InputType::Test1) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } - - #[test] - fn part2() { - let challenge = day17::Day17 {}; - - //Complete the Challenge - let answer = challenge - .part2( - utils::get_input(challenge.get_day(), utils::InputType::Test2) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } -} diff --git a/src/solutions/day18.rs b/src/solutions/day18.rs deleted file mode 100644 index 4db1e9c..0000000 --- a/src/solutions/day18.rs +++ /dev/null @@ -1,66 +0,0 @@ -use super::Solution; - -pub struct Day18 {} - -impl Solution for Day18 { - fn part1( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn part2( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn get_day(&self) -> u8 { - 18 - } -} - -impl Day18 {} - -/// Test from puzzle input -#[cfg(test)] -mod test { - use super::*; - use crate::*; - - #[test] - fn part1() { - let challenge = day18::Day18 {}; - - //Complete the Challenge - let answer = challenge - .part1( - utils::get_input(challenge.get_day(), utils::InputType::Test1) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } - - #[test] - fn part2() { - let challenge = day18::Day18 {}; - - //Complete the Challenge - let answer = challenge - .part2( - utils::get_input(challenge.get_day(), utils::InputType::Test2) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } -} diff --git a/src/solutions/day19.rs b/src/solutions/day19.rs deleted file mode 100644 index babf9c7..0000000 --- a/src/solutions/day19.rs +++ /dev/null @@ -1,66 +0,0 @@ -use super::Solution; - -pub struct Day19 {} - -impl Solution for Day19 { - fn part1( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn part2( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn get_day(&self) -> u8 { - 19 - } -} - -impl Day19 {} - -/// Test from puzzle input -#[cfg(test)] -mod test { - use super::*; - use crate::*; - - #[test] - fn part1() { - let challenge = day19::Day19 {}; - - //Complete the Challenge - let answer = challenge - .part1( - utils::get_input(challenge.get_day(), utils::InputType::Test1) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } - - #[test] - fn part2() { - let challenge = day19::Day19 {}; - - //Complete the Challenge - let answer = challenge - .part2( - utils::get_input(challenge.get_day(), utils::InputType::Test2) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } -} diff --git a/src/solutions/day20.rs b/src/solutions/day20.rs deleted file mode 100644 index e4f3d4a..0000000 --- a/src/solutions/day20.rs +++ /dev/null @@ -1,66 +0,0 @@ -use super::Solution; - -pub struct Day20 {} - -impl Solution for Day20 { - fn part1( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn part2( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn get_day(&self) -> u8 { - 20 - } -} - -impl Day20 {} - -/// Test from puzzle input -#[cfg(test)] -mod test { - use super::*; - use crate::*; - - #[test] - fn part1() { - let challenge = day20::Day20 {}; - - //Complete the Challenge - let answer = challenge - .part1( - utils::get_input(challenge.get_day(), utils::InputType::Test1) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } - - #[test] - fn part2() { - let challenge = day20::Day20 {}; - - //Complete the Challenge - let answer = challenge - .part2( - utils::get_input(challenge.get_day(), utils::InputType::Test2) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } -} diff --git a/src/solutions/day21.rs b/src/solutions/day21.rs deleted file mode 100644 index f4ce049..0000000 --- a/src/solutions/day21.rs +++ /dev/null @@ -1,66 +0,0 @@ -use super::Solution; - -pub struct Day21 {} - -impl Solution for Day21 { - fn part1( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn part2( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn get_day(&self) -> u8 { - 21 - } -} - -impl Day21 {} - -/// Test from puzzle input -#[cfg(test)] -mod test { - use super::*; - use crate::*; - - #[test] - fn part1() { - let challenge = day21::Day21 {}; - - //Complete the Challenge - let answer = challenge - .part1( - utils::get_input(challenge.get_day(), utils::InputType::Test1) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } - - #[test] - fn part2() { - let challenge = day21::Day21 {}; - - //Complete the Challenge - let answer = challenge - .part2( - utils::get_input(challenge.get_day(), utils::InputType::Test2) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } -} diff --git a/src/solutions/day22.rs b/src/solutions/day22.rs deleted file mode 100644 index a336b17..0000000 --- a/src/solutions/day22.rs +++ /dev/null @@ -1,66 +0,0 @@ -use super::Solution; - -pub struct Day22 {} - -impl Solution for Day22 { - fn part1( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn part2( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn get_day(&self) -> u8 { - 22 - } -} - -impl Day22 {} - -/// Test from puzzle input -#[cfg(test)] -mod test { - use super::*; - use crate::*; - - #[test] - fn part1() { - let challenge = day22::Day22 {}; - - //Complete the Challenge - let answer = challenge - .part1( - utils::get_input(challenge.get_day(), utils::InputType::Test1) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } - - #[test] - fn part2() { - let challenge = day22::Day22 {}; - - //Complete the Challenge - let answer = challenge - .part2( - utils::get_input(challenge.get_day(), utils::InputType::Test2) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } -} diff --git a/src/solutions/day23.rs b/src/solutions/day23.rs deleted file mode 100644 index 6b12cef..0000000 --- a/src/solutions/day23.rs +++ /dev/null @@ -1,66 +0,0 @@ -use super::Solution; - -pub struct Day23 {} - -impl Solution for Day23 { - fn part1( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn part2( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn get_day(&self) -> u8 { - 23 - } -} - -impl Day23 {} - -/// Test from puzzle input -#[cfg(test)] -mod test { - use super::*; - use crate::*; - - #[test] - fn part1() { - let challenge = day23::Day23 {}; - - //Complete the Challenge - let answer = challenge - .part1( - utils::get_input(challenge.get_day(), utils::InputType::Test1) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } - - #[test] - fn part2() { - let challenge = day23::Day23 {}; - - //Complete the Challenge - let answer = challenge - .part2( - utils::get_input(challenge.get_day(), utils::InputType::Test2) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } -} diff --git a/src/solutions/day24.rs b/src/solutions/day24.rs deleted file mode 100644 index 74be3fb..0000000 --- a/src/solutions/day24.rs +++ /dev/null @@ -1,66 +0,0 @@ -use super::Solution; - -pub struct Day24 {} - -impl Solution for Day24 { - fn part1( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn part2( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn get_day(&self) -> u8 { - 24 - } -} - -impl Day24 {} - -/// Test from puzzle input -#[cfg(test)] -mod test { - use super::*; - use crate::*; - - #[test] - fn part1() { - let challenge = day24::Day24 {}; - - //Complete the Challenge - let answer = challenge - .part1( - utils::get_input(challenge.get_day(), utils::InputType::Test1) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } - - #[test] - fn part2() { - let challenge = day24::Day24 {}; - - //Complete the Challenge - let answer = challenge - .part2( - utils::get_input(challenge.get_day(), utils::InputType::Test2) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } -} diff --git a/src/solutions/day25.rs b/src/solutions/day25.rs deleted file mode 100644 index 1293500..0000000 --- a/src/solutions/day25.rs +++ /dev/null @@ -1,66 +0,0 @@ -use super::Solution; - -pub struct Day25 {} - -impl Solution for Day25 { - fn part1( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn part2( - &self, - _input: &mut Vec, - ) -> Result, Box> { - Ok(Box::new("Ready")) - } - - fn get_day(&self) -> u8 { - 25 - } -} - -impl Day25 {} - -/// Test from puzzle input -#[cfg(test)] -mod test { - use super::*; - use crate::*; - - #[test] - fn part1() { - let challenge = day25::Day25 {}; - - //Complete the Challenge - let answer = challenge - .part1( - utils::get_input(challenge.get_day(), utils::InputType::Test1) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } - - #[test] - fn part2() { - let challenge = day25::Day25 {}; - - //Complete the Challenge - let answer = challenge - .part2( - utils::get_input(challenge.get_day(), utils::InputType::Test2) - .unwrap() - .as_mut(), - ) - .unwrap() - .to_string(); - - assert_eq!(answer, "Ready"); - } -} diff --git a/src/solutions/mod.rs b/src/solutions/mod.rs index e0584a5..8949770 100644 --- a/src/solutions/mod.rs +++ b/src/solutions/mod.rs @@ -10,19 +10,6 @@ pub mod day09; pub mod day10; pub mod day11; pub mod day12; -pub mod day13; -pub mod day14; -pub mod day15; -pub mod day16; -pub mod day17; -pub mod day18; -pub mod day19; -pub mod day20; -pub mod day21; -pub mod day22; -pub mod day23; -pub mod day24; -pub mod day25; use crate::utils::{self, get_input}; use std::{error::Error, fmt::Display, time::SystemTime}; diff --git a/src/utils.rs b/src/utils.rs index 10a4dec..fe5864f 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,7 +1,7 @@ use std::{ error::Error, fs::File, - io::{prelude::*, BufReader}, + io::{BufReader, prelude::*}, }; /// Enum used to specify input