diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..a21d5a1 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module git.gulaschkanister.de/julian.dnr/AoC-2025 + +go 1.25.5 diff --git a/inputs/day_1.txt b/inputs/day_1.txt new file mode 100644 index 0000000..e629639 --- /dev/null +++ b/inputs/day_1.txt @@ -0,0 +1,4654 @@ +L47 +R26 +L18 +R18 +R26 +R15 +L33 +R8 +L26 +L25 +R6 +L47 +L7 +R40 +L1 +L4 +R43 +L30 +R3 +L1 +R8 +L18 +L25 +R20 +L45 +R12 +R12 +R32 +L14 +L50 +R32 +L31 +R37 +L34 +R8 +L18 +R15 +R14 +L10 +R38 +R34 +L45 +L34 +L13 +R32 +R2 +L12 +L19 +L2 +L22 +L19 +L87 +R6 +R34 +R74 +L66 +R58 +L40 +R79 +R74 +R33 +R3 +L22 +L71 +L62 +R91 +R5 +L61 +L30 +L99 +R43 +R44 +R3 +R80 +R59 +R96 +L27 +L98 +R28 +L98 +L4 +R13 +L97 +L42 +R81 +L81 +L80 +L91 +R6 +R65 +R48 +R86 +R44 +R22 +L80 +L20 +R55 +R45 +R58 +L42 +L41 +L75 +L41 +L966 +R402 +R5 +L384 +L616 +L88 +R45 +R8 +R24 +R11 +R512 +R88 +R84 +L549 +R26 +R25 +R60 +L70 +L76 +R362 +L162 +L447 +R95 +L30 +R182 +L16 +R916 +R919 +L19 +L24 +L56 +R11 +R8 +L35 +L4 +L77 +R45 +L68 +R50 +R53 +L303 +R50 +R27 +L77 +L44 +L956 +R622 +L19 +L677 +L4 +L76 +R62 +L50 +L84 +R23 +R89 +R97 +L94 +L89 +R99 +R7 +R53 +L59 +R76 +R93 +L31 +L15 +L23 +R88 +R12 +L93 +L36 +R460 +R47 +R22 +L69 +L58 +R45 +L718 +R94 +L23 +L28 +L43 +R80 +L80 +L85 +L15 +R85 +R35 +R180 +R67 +L43 +L79 +R54 +L99 +L90 +L10 +R64 +R408 +L72 +R38 +L87 +R36 +L48 +L39 +L67 +L33 +R30 +R37 +R2 +R94 +R441 +L521 +L47 +R12 +L40 +R671 +R21 +R7 +R147 +L54 +L889 +L74 +L258 +L51 +R10 +L796 +R30 +R79 +L51 +R78 +L84 +L5 +R54 +R55 +L30 +L68 +R79 +L10 +L269 +L65 +L53 +R61 +R240 +R29 +L28 +R330 +R25 +L54 +L585 +R71 +L41 +R47 +L507 +R30 +R156 +L56 +L724 +L76 +R33 +R1 +R94 +L37 +L7 +R52 +L47 +R611 +R72 +L13 +L97 +R38 +R92 +R65 +L57 +R858 +L83 +L75 +R30 +L330 +L476 +L47 +R33 +L87 +L52 +R29 +L55 +L45 +R1 +R99 +R39 +R61 +L17 +L783 +L33 +L67 +R42 +R86 +R22 +L450 +R69 +R31 +R30 +L930 +L3 +L39 +R973 +L38 +R25 +R23 +R79 +R39 +L59 +R605 +L334 +L98 +L973 +L15 +R11 +L82 +R86 +L57 +R29 +R65 +R5 +L52 +L8 +R26 +R33 +R59 +L31 +L18 +R49 +R81 +L81 +R357 +L57 +L51 +R51 +L17 +R67 +L108 +R58 +R12 +R373 +R15 +R18 +L618 +R768 +L4 +L29 +R31 +L25 +R39 +L880 +R81 +L56 +R75 +R77 +L452 +R75 +R49 +R35 +R85 +L103 +L97 +R9 +L934 +R53 +R46 +L43 +L10 +L436 +R47 +R65 +R25 +L6 +R223 +R411 +L19 +R532 +L21 +L69 +L89 +L37 +R88 +R94 +R2 +L83 +L16 +L717 +R18 +L49 +L37 +L16 +L65 +R65 +L454 +R26 +R210 +L58 +R50 +R526 +R97 +R92 +R20 +L196 +L13 +L12 +L88 +L17 +R48 +R984 +L15 +L50 +L70 +R20 +R49 +L49 +R42 +R60 +L13 +R11 +R50 +L71 +R79 +R96 +R46 +R57 +R21 +L778 +L803 +R3 +L865 +R22 +L40 +R407 +L79 +L57 +R12 +R11 +L864 +L47 +R90 +R98 +R12 +L216 +L84 +L97 +L2 +L25 +L33 +R33 +L990 +L58 +L167 +L28 +R33 +R340 +R94 +L38 +R80 +L42 +L21 +R28 +R474 +R4 +L85 +R59 +L59 +L979 +R79 +R77 +R123 +R515 +L15 +R32 +L32 +L21 +L116 +R37 +L74 +R74 +L51 +R35 +L37 +L26 +R90 +L56 +R45 +L280 +R604 +L60 +R328 +L92 +R913 +R60 +L21 +L34 +L18 +R4 +R93 +L97 +R54 +L54 +R86 +R2 +R12 +L11 +R11 +L177 +L22 +R99 +R25 +L25 +R7 +L41 +L30 +L36 +R86 +R53 +L606 +R67 +R5 +L505 +R164 +L64 +R98 +L3 +L195 +L54 +L97 +R51 +L20 +R20 +R92 +L92 +R65 +R35 +L42 +R63 +R79 +R31 +R94 +R75 +R18 +R82 +R32 +L547 +R153 +R35 +L573 +R599 +R90 +R27 +L16 +L20 +R20 +L855 +R255 +R925 +R75 +R729 +L29 +L899 +L1 +L86 +R29 +L3 +L40 +L149 +R69 +L458 +R11 +L61 +L580 +R321 +R247 +L57 +L63 +L14 +R57 +R19 +L42 +L54 +R31 +R769 +R57 +L637 +L544 +L94 +R7 +L81 +L73 +R352 +L8 +L25 +L878 +R478 +R70 +R90 +L37 +L811 +L70 +L42 +L92 +R54 +R43 +R95 +L161 +L22 +L17 +L93 +L565 +L42 +L63 +L611 +L726 +L80 +L42 +L378 +L81 +L49 +L83 +L287 +R819 +L54 +L53 +R488 +R47 +R14 +L141 +L420 +L72 +R72 +L17 +L939 +L36 +R192 +R66 +L50 +R84 +R27 +L85 +L69 +L646 +L85 +R25 +R33 +R97 +L686 +R989 +R90 +R67 +L57 +L14 +L70 +L17 +L375 +R37 +L61 +R2 +L2 +R443 +R22 +R611 +R83 +L59 +L451 +L304 +R48 +L24 +L69 +R8 +R92 +R12 +L12 +L76 +L424 +L351 +L51 +L98 +L4 +L42 +R77 +L87 +R33 +R17 +R6 +R21 +L342 +R321 +R32 +L54 +R206 +R67 +R27 +L30 +L71 +R34 +L88 +R77 +R68 +R6 +L30 +L93 +R62 +L141 +R26 +R3 +L942 +L20 +R16 +R19 +R26 +L71 +R957 +L43 +R42 +L10 +R21 +R4 +L27 +L85 +L3 +L64 +L21 +L87 +R3 +L816 +R47 +L46 +R99 +L75 +L25 +L71 +R83 +L67 +L25 +R41 +L61 +R28 +R192 +L20 +L11 +L989 +R64 +R25 +L62 +L227 +R92 +L692 +L68 +L14 +R82 +R81 +L77 +R62 +R88 +R46 +L91 +R59 +R57 +L88 +L687 +R38 +L88 +R90 +L190 +R24 +L82 +L73 +R540 +R136 +L888 +R443 +R40 +R260 +L1 +L99 +L6 +R88 +L82 +L37 +L63 +L790 +L28 +L40 +R69 +L11 +L83 +L95 +L61 +R29 +L54 +L236 +R25 +L90 +R399 +L49 +L67 +L18 +R47 +L46 +L866 +L2 +R41 +R62 +R64 +L67 +L5 +L10 +R199 +L61 +L556 +R26 +R31 +R25 +R9 +R9 +L50 +L76 +R26 +L303 +R3 +R2 +L35 +L1 +R98 +R87 +L51 +R28 +L28 +L23 +L2 +L175 +L12 +L21 +L22 +R555 +R952 +L52 +R345 +R63 +R639 +R679 +R54 +L13 +L67 +R12 +L12 +R23 +L64 +L33 +R874 +L932 +R32 +L99 +L34 +R92 +R41 +L37 +R22 +L8 +L73 +L427 +R23 +R15 +R17 +R61 +L44 +R67 +L116 +L66 +L32 +R80 +L11 +L44 +L27 +R60 +R40 +L66 +R66 +L60 +L40 +R372 +L772 +R52 +R48 +R90 +L77 +R94 +L7 +R81 +L381 +L60 +R854 +R95 +L989 +R40 +R32 +L41 +L68 +L63 +R919 +R781 +R57 +L32 +L25 +R18 +L861 +L815 +R698 +L16 +L875 +L49 +L58 +R68 +R86 +R16 +R788 +L15 +L85 +L69 +R23 +L50 +R96 +R76 +L88 +R12 +L71 +L31 +L14 +R20 +L4 +L51 +L549 +L74 +L35 +L91 +L13 +R13 +L891 +L85 +L76 +R37 +L660 +R75 +L9 +L322 +L69 +R817 +R83 +L75 +L25 +R85 +R57 +L669 +R1 +L74 +L57 +L48 +R76 +L71 +R394 +R98 +R44 +R93 +R91 +L90 +R35 +L193 +R57 +R31 +L60 +R240 +R60 +R62 +L44 +L18 +R6 +L506 +R46 +R54 +R74 +L74 +R80 +L294 +R277 +R49 +R8 +R88 +R92 +R78 +R611 +L611 +R22 +L928 +R89 +R839 +L27 +R66 +L39 +R11 +L11 +R56 +R97 +R922 +L574 +L1 +L89 +R15 +L73 +R947 +L61 +L85 +R46 +L72 +L28 +L72 +R29 +L23 +R66 +L33 +L67 +L2 +L798 +L90 +R31 +L46 +L61 +L934 +L85 +R85 +L17 +L83 +L14 +L4 +R518 +R43 +L5 +L78 +R40 +L9 +R9 +L814 +L444 +L90 +R5 +L57 +R35 +L435 +R780 +L80 +L98 +L2 +R57 +R269 +R23 +R51 +L17 +L385 +L991 +L5 +L26 +L27 +L28 +R19 +R93 +L33 +R18 +L34 +L9 +L66 +L48 +L92 +R17 +R214 +L368 +L38 +R98 +R18 +L10 +R88 +L288 +L41 +L267 +R8 +R38 +L745 +R7 +L23 +L1 +L44 +L91 +L89 +R87 +L639 +R12 +R86 +L98 +R182 +L93 +R397 +L86 +R50 +R50 +L84 +R84 +R29 +R44 +R98 +L96 +L53 +L90 +R837 +R31 +R355 +R45 +L22 +L18 +R68 +R3 +R54 +L20 +R12 +L43 +L47 +R70 +L86 +R74 +L45 +R867 +L85 +L82 +R46 +R48 +R898 +L98 +R30 +R2 +R74 +L47 +R1 +L48 +R36 +L26 +L97 +R81 +L91 +R413 +L22 +R78 +L78 +R19 +R263 +L382 +L45 +L18 +R476 +L44 +L112 +R22 +L79 +R34 +L9 +L25 +L22 +R22 +R8 +R39 +L47 +R46 +L229 +L996 +R79 +L12 +L47 +L15 +R74 +L70 +L22 +R92 +R505 +L33 +R28 +R15 +R80 +L47 +L27 +L87 +L34 +L37 +L97 +L24 +L42 +R10 +R90 +R98 +L44 +R46 +L546 +R88 +R46 +R558 +L46 +R62 +R738 +L93 +R16 +L340 +R17 +L32 +L168 +R12 +L175 +L37 +L19 +L81 +L51 +L8 +L903 +L38 +L62 +L38 +R77 +L185 +R33 +L94 +L10 +R91 +L12 +R72 +L63 +R17 +L26 +R55 +R58 +R87 +R660 +L77 +L77 +L71 +L68 +L80 +R13 +L81 +R36 +R1 +L56 +R71 +R63 +R66 +L77 +R51 +L186 +R45 +R14 +L47 +R92 +R707 +L21 +L886 +L92 +L50 +L50 +R870 +R74 +L75 +L59 +L40 +L35 +R65 +R24 +R15 +L78 +R73 +R66 +R267 +L48 +L19 +R2 +R83 +R99 +R355 +L39 +R72 +R37 +R91 +R22 +L22 +R83 +L83 +L62 +L25 +R278 +R77 +R809 +L48 +L29 +R89 +L18 +R29 +R50 +L24 +L24 +R83 +R15 +R10 +L741 +R68 +R86 +R6 +L29 +L9 +L8 +L419 +R36 +L187 +L13 +R989 +R56 +L466 +L296 +R158 +L41 +L81 +L65 +R86 +R22 +R938 +L81 +R652 +L49 +L22 +L75 +R793 +R82 +R98 +L373 +R10 +L116 +L11 +L93 +R85 +L759 +R22 +R37 +L13 +L20 +L45 +L12 +R77 +R54 +R583 +R50 +L370 +R96 +R672 +R48 +R3 +R77 +L45 +L42 +L13 +L55 +L81 +R87 +L51 +L4 +L96 +L55 +L45 +R151 +R374 +L16 +L52 +L957 +R94 +L194 +L94 +R34 +L18 +L97 +R475 +R337 +R74 +R35 +L346 +R74 +L74 +R169 +R36 +R242 +R61 +R78 +L161 +R798 +R37 +R59 +R567 +R14 +R38 +R73 +L52 +R39 +L29 +L35 +R6 +L31 +R87 +R4 +R656 +L43 +R65 +L78 +R8 +R14 +R14 +L29 +L7 +L15 +L36 +L49 +R189 +R53 +L55 +L759 +L70 +R860 +R7 +R36 +L570 +L91 +R57 +L787 +R30 +R77 +L93 +L84 +L62 +R54 +L91 +L1 +R69 +L37 +L21 +R91 +R33 +R72 +R53 +R40 +R58 +L58 +R72 +L62 +R87 +R3 +L17 +R229 +R865 +L77 +L61 +L67 +R28 +R16 +L88 +R1 +R71 +L507 +L193 +L446 +R46 +R38 +R62 +R53 +L653 +R94 +L94 +R57 +R402 +L32 +L1 +R25 +R49 +R51 +R57 +L8 +R43 +R857 +L88 +R88 +R83 +R17 +R322 +L46 +L81 +L795 +L32 +R732 +R76 +L276 +L181 +L19 +R33 +R16 +L61 +R555 +R457 +L28 +L953 +L79 +L69 +L71 +L25 +L715 +R53 +L25 +R12 +L72 +R523 +L451 +L37 +L42 +R45 +L12 +R46 +R99 +R23 +L59 +R37 +R97 +R91 +R410 +R2 +R46 +R220 +R998 +R36 +R63 +R37 +L522 +R222 +L714 +L703 +L1 +R18 +R534 +L60 +R26 +R39 +R391 +L630 +L3 +L97 +L132 +R32 +L499 +R69 +L70 +L30 +L83 +L72 +R87 +L2 +R40 +R60 +R50 +R44 +L56 +R62 +L45 +L77 +L23 +L83 +L94 +R22 +L67 +R65 +L98 +L57 +R25 +R32 +R67 +R45 +R787 +R1 +L31 +L69 +L42 +L58 +R831 +R568 +R51 +L50 +L75 +L25 +L833 +R426 +R72 +R35 +L299 +L65 +R263 +R1 +R89 +R11 +L80 +R43 +L63 +L38 +R38 +R6 +R80 +L919 +L40 +L27 +L66 +R45 +L79 +L80 +L776 +R56 +L87 +L8 +L15 +R13 +R997 +L89 +L6 +L28 +R27 +L99 +L5 +R79 +R96 +L75 +L72 +L54 +L74 +R74 +L19 +R1 +L56 +R41 +L20 +L6 +R80 +R5 +L9 +L813 +R62 +R760 +R51 +R61 +R23 +R365 +L62 +R62 +R39 +R67 +L66 +R468 +R9 +R538 +L55 +R20 +R280 +L71 +L629 +L78 +R728 +R39 +L50 +L139 +R119 +L23 +R3 +L62 +L37 +R96 +L338 +R302 +L87 +L17 +R644 +R82 +R64 +L46 +L16 +L23 +R1 +R38 +R28 +L18 +L1 +L83 +L4 +L82 +L7 +L533 +R93 +R41 +L66 +R32 +R259 +L8 +L22 +R36 +R35 +R85 +R82 +L745 +R78 +R68 +R92 +L96 +L64 +R5 +L85 +L20 +L65 +L35 +R22 +L21 +L8 +R307 +L29 +R29 +R94 +R65 +L910 +R74 +R77 +L561 +L72 +R71 +R96 +R48 +R37 +R837 +R860 +L93 +L349 +R26 +L99 +L347 +R146 +L58 +R16 +L898 +L362 +R777 +L75 +L33 +R19 +L79 +R473 +L61 +L32 +L26 +R34 +R5 +L55 +R82 +L85 +L642 +L44 +R844 +R33 +R994 +R51 +L78 +R39 +L8 +R69 +R2 +R98 +R60 +L60 +R89 +R11 +L701 +R77 +R72 +L952 +L96 +L813 +R91 +R22 +R82 +L650 +L59 +R21 +L57 +R63 +R82 +L60 +L60 +L59 +R33 +L69 +L47 +R12 +R468 +L69 +R69 +R96 +R25 +R46 +L10 +L57 +L56 +R56 +R940 +R60 +L62 +L38 +L54 +L341 +L83 +L22 +L56 +R39 +L72 +L7 +L302 +R98 +L37 +L96 +L9 +R453 +L11 +R42 +L16 +R4 +R670 +L76 +R1 +L94 +L231 +R24 +L50 +L74 +R79 +L679 +L880 +L820 +L468 +L18 +R55 +R579 +R49 +L97 +L45 +R874 +R71 +L76 +L951 +R27 +R54 +L54 +L9 +L33 +R542 +R53 +R59 +L76 +L12 +L24 +R34 +L34 +L15 +R56 +L56 +L16 +R69 +L64 +R53 +L27 +R93 +L85 +L10 +L242 +R44 +L38 +L45 +L26 +L91 +L196 +L204 +L9 +R9 +L812 +L954 +R66 +R83 +R42 +L608 +R83 +L70 +R375 +L38 +L19 +R52 +L44 +L18 +L41 +R33 +L10 +L820 +L27 +R601 +L24 +R50 +L90 +R90 +L5 +R23 +L73 +L86 +R601 +R70 +L33 +R303 +R22 +L22 +L384 +L65 +L51 +R45 +L82 +L922 +R3 +L75 +L5 +L864 +L4 +R67 +L63 +L70 +L134 +R704 +R21 +R79 +R943 +L43 +R89 +L38 +R23 +L74 +L18 +L782 +R41 +R59 +L47 +L345 +R18 +R74 +L832 +R811 +R485 +L622 +L56 +L522 +R92 +L56 +R96 +R389 +L49 +L70 +L43 +R41 +L638 +L26 +L85 +R735 +R88 +R84 +L82 +L78 +R38 +R72 +L20 +L30 +R66 +L596 +R76 +L68 +L317 +R17 +R313 +R72 +R99 +R16 +R18 +R38 +R244 +L116 +L466 +L3 +R696 +R89 +R830 +R63 +R64 +L57 +R15 +R69 +R99 +R48 +R949 +R26 +R951 +R33 +R10 +L40 +L60 +R59 +R79 +R32 +R29 +L820 +L56 +R72 +L41 +R66 +L20 +L110 +R10 +L844 +R44 +R171 +R94 +L65 +R8 +R611 +R48 +R33 +L211 +L61 +L728 +L91 +R21 +R70 +L199 +R20 +R18 +L51 +L33 +R10 +R47 +R90 +L95 +L186 +R36 +R43 +R684 +L84 +R221 +L16 +R776 +L581 +L83 +L17 +R902 +R98 +L277 +L223 +L47 +R43 +L75 +L21 +L612 +R56 +L88 +L24 +L26 +R45 +R49 +R82 +L82 +L1 +R1 +L741 +R719 +R52 +R70 +R59 +R60 +R64 +L74 +R30 +L902 +R63 +R38 +L93 +R888 +R97 +R741 +L171 +R88 +R88 +R46 +R86 +R92 +L580 +R80 +L493 +L7 +L787 +R87 +L52 +R58 +R97 +R51 +R10 +R36 +R96 +L96 +L88 +L610 +R898 +R95 +L268 +L33 +L94 +R10 +L394 +R40 +R80 +R364 +L327 +R58 +R16 +R53 +R11 +R42 +R54 +L6 +R68 +R88 +R43 +R93 +R15 +R92 +R4 +L4 +R28 +L70 +R42 +R73 +L73 +L46 +L16 +L38 +L68 +L32 +R635 +L789 +L43 +L32 +R34 +R95 +R86 +L21 +L265 +L931 +L26 +R22 +L68 +R3 +L90 +L10 +R85 +L11 +R934 +R72 +L32 +L8 +L40 +R46 +L36 +L58 +L52 +L12 +L55 +L22 +L11 +L795 +L244 +R585 +L46 +L1 +R1 +L376 +R25 +R42 +R981 +R39 +R39 +R768 +L254 +L51 +R87 +R47 +L491 +R44 +L888 +L735 +R730 +R56 +R37 +R262 +L894 +L868 +L53 +L75 +L42 +R65 +L795 +R412 +L20 +R25 +L98 +R434 +L78 +R62 +L26 +L711 +R61 +L98 +R37 +R64 +R36 +L768 +L57 +R25 +R14 +R57 +L60 +L33 +L346 +L32 +L1 +R1 +L80 +R36 +L17 +R78 +L17 +L57 +L49 +R79 +L430 +L543 +L21 +L79 +R37 +L55 +R3 +L85 +L31 +L83 +R10 +R4 +R79 +L79 +L39 +R68 +L29 +R221 +L21 +R395 +L95 +L57 +L504 +L843 +R704 +R960 +L83 +L99 +R17 +R48 +L61 +L93 +R11 +L59 +R59 +R73 +L73 +R45 +R39 +R16 +L982 +R82 +R62 +L62 +R105 +R775 +L38 +L42 +R43 +L43 +L74 +L45 +R61 +L33 +L33 +R71 +R90 +R266 +R88 +L74 +L17 +L924 +L51 +L89 +L9 +R93 +R7 +L89 +L18 +R80 +L967 +L96 +R63 +R491 +L33 +R54 +L12 +L53 +R2 +R54 +L3 +R89 +R7 +L96 +R94 +R38 +L32 +R95 +L542 +R99 +L85 +R10 +L177 +L92 +R80 +R12 +R32 +L54 +R140 +R77 +R5 +L18 +L982 +R13 +R52 +L65 +L92 +L8 +L8 +L96 +L22 +L516 +R42 +R81 +L81 +R51 +L43 +L808 +R2 +L402 +R66 +R12 +R22 +L54 +L37 +L11 +L32 +R34 +R5 +R395 +R11 +L11 +L28 +L74 +L98 +R615 +L15 +R86 +L16 +R51 +L87 +R90 +R76 +L22 +R22 +R46 +L21 +L25 +L51 +L49 +R22 +R78 +R550 +L75 +L75 +R811 +R89 +R80 +R49 +L77 +L52 +R61 +R779 +R77 +L65 +R23 +R72 +L47 +L45 +L66 +R13 +L2 +L70 +L766 +L45 +L15 +L98 +L60 +L46 +R93 +L39 +L91 +L87 +L6 +L70 +R97 +R70 +R304 +L5 +R6 +L86 +R39 +L80 +L45 +R470 +R21 +L135 +L56 +L63 +R93 +R15 +L911 +R66 +L22 +L15 +R44 +R38 +L45 +R23 +R59 +R18 +R30 +L53 +R42 +R81 +L258 +R58 +R412 +R36 +R99 +L47 +R26 +R33 +L370 +R748 +R39 +R26 +L716 +R40 +R433 +L34 +R75 +R18 +L18 +L39 +R46 +L30 +L50 +L29 +R46 +L70 +R59 +R870 +L97 +L27 +L32 +L93 +L54 +L81 +L19 +R89 +L42 +R153 +L37 +R37 +R94 +R6 +L192 +L89 +R93 +L24 +L6 +R77 +L87 +R28 +L52 +L35 +L877 +R18 +R8 +R27 +L30 +R3 +R8 +R53 +L23 +R470 +R930 +L13 +L87 +R42 +R58 +L96 +L604 +L29 +L68 +R90 +L51 +R601 +L54 +R911 +L12 +L28 +L28 +L44 +L442 +R88 +R61 +R1 +R58 +R46 +L67 +R96 +R84 +L713 +L37 +R88 +R3 +R1 +R87 +L37 +L5 +R78 +L16 +R39 +R775 +L76 +L49 +R49 +L30 +R30 +R82 +R618 +R21 +L546 +L88 +R18 +L805 +L84 +L62 +L54 +L134 +L573 +R53 +L494 +L52 +R95 +R338 +L23 +L10 +L72 +L469 +R16 +L75 +R64 +L65 +L62 +R63 +R66 +R3 +R35 +R96 +R33 +L37 +R4 +L69 +L31 +L80 +R62 +L82 +L66 +L21 +R35 +L84 +L73 +L28 +R37 +L91 +L9 +R80 +L13 +L16 +L96 +L69 +L71 +L77 +R5 +L43 +R73 +L73 +R40 +L56 +L689 +L474 +R79 +L33 +R978 +R57 +L18 +R39 +R77 +L38 +L86 +L376 +R38 +R62 +L28 +L565 +L62 +R95 +R60 +R56 +R28 +L94 +L95 +R5 +R46 +L94 +L752 +R77 +L8 +L69 +L60 +L175 +R42 +L670 +R866 +R864 +R19 +L23 +R70 +L33 +L50 +R50 +L2 +R802 +R78 +L84 +L26 +L20 +R52 +L57 +L52 +R36 +R68 +L682 +R14 +L83 +L44 +R25 +R44 +L64 +L20 +R92 +R23 +L5 +R14 +R201 +R86 +R20 +R34 +R950 +R886 +L89 +R71 +L90 +L21 +R81 +L4 +L34 +R392 +L22 +L70 +R29 +R271 +L4 +R4 +R87 +L53 +R525 +L78 +R75 +R944 +L75 +R46 +R29 +L18 +R18 +L54 +L91 +R45 +R7 +L41 +R14 +L80 +R8 +R92 +L76 +R76 +L39 +R27 +R85 +R99 +L98 +L60 +L14 +L35 +L24 +R71 +L60 +R648 +L88 +R6 +L12 +L606 +L49 +L751 +L94 +R337 +R53 +R4 +R58 +R42 +R136 +L36 +R72 +R57 +R71 +R97 +R86 +L83 +L15 +L466 +R81 +L3 +L81 +R84 +R15 +R57 +L305 +L67 +L155 +R762 +R59 +R633 +L62 +L37 +R97 +R28 +L25 +L32 +L37 +R380 +R89 +R49 +L49 +R11 +L82 +L3 +R74 +R8 +R892 +R57 +L57 +R14 +R286 +R421 +L89 +R81 +R597 +R90 +L2 +R89 +L431 +L98 +R42 +L50 +L92 +R45 +R58 +L438 +L94 +R181 +R91 +L67 +L18 +L54 +R78 +L7 +R67 +R96 +L11 +L85 +R83 +R78 +R12 +R58 +L16 +L77 +L26 +L712 +L75 +L83 +R70 +L52 +L197 +R18 +L81 +L18 +L82 +L3 +R3 +R58 +L91 +R934 +L1 +L6 +L9 +R15 +L447 +R947 +L42 +R42 +L797 +L240 +R68 +R69 +R51 +L51 +R85 +L785 +L381 +R39 +R42 +L47 +R29 +R18 +L90 +L970 +R108 +L48 +R152 +L66 +R15 +R38 +L31 +L8 +R42 +L42 +L18 +L355 +R73 +R15 +R67 +R49 +R61 +L71 +R201 +R36 +R6 +R807 +L57 +L2 +R59 +L67 +L29 +L75 +L103 +R903 +R6 +R94 +R770 +R13 +R17 +L46 +L61 +L62 +L10 +L679 +L69 +R91 +R36 +L31 +L69 +L85 +R85 +L30 +L70 +R75 +L75 +R43 +R45 +L33 +R16 +R37 +L8 +L893 +R93 +L23 +R93 +R82 +L452 +R941 +L41 +L57 +R57 +R44 +R52 +R304 +R45 +L745 +L9 +L91 +R901 +R104 +L205 +R24 +L498 +L61 +L56 +L9 +R96 +L896 +L648 +R87 +R61 +L84 +R8 +L41 +R53 +R64 +L31 +L69 +L27 +L73 +R310 +R517 +R14 +R131 +R328 +R44 +L844 +L61 +L35 +L96 +L8 +R82 +R9 +R98 +L841 +R58 +R11 +R83 +R87 +L58 +L17 +R91 +R97 +L227 +L55 +L18 +L11 +L89 +R79 +L21 +L858 +L84 +R869 +R62 +R53 +R73 +L73 +R95 +R92 +L87 +R38 +R22 +L62 +L44 +L445 +R42 +R65 +R84 +L6 +R4 +R10 +L52 +R44 +L66 +L22 +R88 +R127 +R72 +R86 +R15 +R1 +L1 +R22 +L722 +L68 +R317 +R75 +R2 +R95 +R79 +L81 +R81 +R70 +L97 +L67 +L87 +R75 +L932 +R2 +L64 +L5 +L56 +L84 +L37 +L80 +L38 +L931 +L96 +L11 +R38 +L965 +L529 +L22 +R299 +L80 +R49 +L52 +L689 +R696 +L97 +L8 +L802 +L50 +L31 +L76 +R82 +L17 +L8 +L46 +L54 +L159 +R59 +L71 +R271 +L52 +L19 +R50 +R52 +R69 +R87 +L87 +L62 +R62 +R47 +R53 +R76 +R655 +L976 +R45 +R83 +R75 +R981 +L39 +R10 +R90 +R84 +L30 +R48 +R98 +R65 +L212 +R348 +R99 +R637 +L24 +L13 +L29 +R29 +L557 +L43 +L3 +L10 +R13 +R88 +L48 +L42 +L19 +L79 +L7 +R591 +R47 +L724 +L57 +L53 +L97 +R35 +L87 +R52 +L9 +L57 +L33 +L1 +L86 +R26 +L440 +L58 +L42 +R14 +L656 +L58 +R2 +R198 +R23 +R77 +L55 +L45 +L37 +L316 +L82 +R45 +R2 +R53 +R935 +L2 +R50 +R48 +L86 +L18 +L792 +L32 +L89 +R86 +R35 +L65 +R65 +R38 +L38 +R33 +L8 +R825 +L87 +L63 +R367 +R64 +L93 +R15 +R623 +R26 +R71 +L373 +L40 +R54 +R43 +L57 +R30 +L99 +R469 +R92 +L551 +L92 +R51 +L49 +R491 +L42 +L936 +L464 +R930 +R19 +R557 +R40 +R521 +L67 +R4 +L88 +L944 +L172 +R42 +R82 +L99 +R62 +R13 +R54 +L64 +R52 +L42 +R29 +L67 +L62 +L57 +L143 +L289 +R89 +L33 +L1 +L87 +R47 +L20 +R18 +R322 +L27 +R135 +L43 +L58 +R27 +R20 +L89 +L58 +R47 +L88 +L512 +L73 +L79 +R352 +L10 +L423 +R33 +L6 +L94 +R86 +L86 +R5 +L705 +L28 +L611 +L55 +R34 +L884 +L168 +L88 +R33 +L33 +L10 +L90 +R61 +R528 +R11 +L24 +L76 +L11 +R261 +R50 +R1 +L30 +R129 +R40 +R69 +L19 +R80 +L43 +R73 +R42 +R27 +R65 +R99 +L33 +R58 +R92 +L39 +R91 +L71 +R69 +R95 +L395 +L812 +L975 +L79 +R28 +L149 +L98 +L15 +R32 +R68 +R121 +L48 +R27 +R362 +R21 +R45 +L92 +R10 +L46 +L73 +R73 +L99 +R99 +L810 +R93 +L52 +R65 +R63 +R41 +R62 +R93 +R45 +R15 +R85 +R55 +L55 +L98 +R98 +L13 +L93 +L94 +R38 +L38 +L59 +R759 +L79 +R892 +R65 +L81 +R3 +L85 +R69 +R92 +L76 +L448 +L52 +L15 +R53 +R62 +R78 +R31 +R71 +L21 +L59 +L67 +L33 +R3 +R90 +L93 +R44 +L44 +R312 +R625 +R63 +L532 +L718 +R50 +R17 +L69 +R12 +L33 +R73 +R92 +L92 +L733 +L95 +R328 +L97 +L234 +L96 +L773 +L38 +L62 +R57 +L64 +L59 +L897 +L637 +R554 +R3 +L99 +L87 +R629 +R21 +R67 +R6 +R6 +L7 +L93 +L337 +R60 +R77 +R64 +L39 +L3 +R78 +L664 +R64 +L56 +L58 +L11 +R95 +R21 +L82 +L618 +L95 +R1 +R666 +L22 +L41 +R18 +L45 +R27 +L21 +L59 +R92 +L74 +R9 +L47 +R1 +L545 +R290 +L205 +L21 +L68 +L53 +L21 +R22 +L789 +R39 +R73 +L23 +R21 +R24 +R74 +R81 +L89 +L217 +R9 +L287 +L55 +L20 +L41 +R490 +R405 +R10 +R62 +R33 +R33 +R17 +L207 +L61 +L82 +L42 +L25 +L33 +R93 +R3 +R91 +L5 +L67 +L15 +R96 +L69 +L13 +L554 +L60 +R12 +L65 +L649 +L94 +R596 +R73 +L74 +L99 +R560 +R40 +R62 +L62 +R13 +R87 +R16 +R84 +L134 +L36 +R70 +R64 +R27 +L91 +R215 +L43 +R12 +R3 +R13 +L44 +L856 +R78 +R22 +R157 +L57 +L36 +R36 +L25 +L89 +R215 +R99 +L3 +L97 +R55 +L35 +L9 +L23 +R49 +R66 +R10 +L63 +L50 +R49 +R151 +L42 +L58 +R78 +L93 +R19 +R54 +R54 +R72 +L13 +L89 +R16 +R56 +R89 +R64 +L28 +L6 +L6 +R84 +R343 +L94 +R71 +L10 +R39 +L719 +R19 +L67 +L82 +L62 +L89 +L79 +R77 +L51 +R933 +R72 +R19 +L34 +R63 +L80 +R80 +L398 +R98 +L80 +L73 +L76 +R17 +L67 +L32 +L85 +L88 +L13 +R48 +R816 +L19 +R52 +L85 +L19 +L406 +L12 +R45 +L914 +R35 +R56 +R35 +L72 +R917 +L4 +L897 +R626 +R95 +R48 +R102 +L50 +R44 +L997 +L647 +R72 +L72 +L81 +R81 +L32 +R52 +R687 +R363 +R80 +R48 +R65 +R50 +L95 +R82 +R1 +R99 +L11 +L40 +R51 +L94 +L6 +R206 +R33 +L78 +L73 +L566 +L91 +R53 +R42 +R686 +L12 +R44 +R19 +R37 +L79 +R93 +R86 +L711 +R11 +L731 +R59 +L21 +L807 +L371 +L229 +L72 +R72 +L31 +L20 +R78 +R35 +L97 +L85 +R42 +R37 +L59 +R77 +R23 +L20 +L280 +R48 +L75 +R603 +R29 +L298 +R80 +L67 +R30 +R12 +L14 +R581 +R71 +R66 +L32 +L453 +R27 +L8 +R8 +L39 +R31 +L787 +L13 +R50 +R50 +L84 +R60 +R49 +L25 +L99 +R993 +L542 +L52 +L29 +L71 +L46 +L43 +R7 +L32 +L91 +L59 +L1 +L11 +R3 +L47 +R120 +L41 +R841 +R1 +L457 +R48 +R608 +R10 +L10 +R34 +L5 +R71 +R563 +L95 +L51 +R83 +L83 +L17 +L28 +R50 +R15 +L37 +L267 +L63 +L689 +R72 +L4 +L73 +L176 +L93 +L62 +L45 +R32 +R236 +R732 +R2 +R62 +R36 +L913 +L49 +R62 +L324 +L76 +R61 +R839 +R69 +L853 +R52 +R26 +L94 +R32 +L70 +R23 +L98 +R13 +L30 +R21 +R419 +L210 +L98 +R35 +L237 +L54 +L643 +L94 +R392 +R4 +L5 +L39 +L41 +L20 +L48 +L46 +L6 +R944 +R5 +R34 +R17 +R33 +R91 +R31 +R325 +L80 +R14 +R54 +R936 +R96 +R442 +L797 +L22 +L723 +R30 +R70 +L760 +R51 +R9 +R434 +L376 +R31 +L76 +L22 +R9 +R32 +L144 +L30 +R689 +L4 +L94 +R66 +L658 +L69 +R86 +R66 +R78 +R422 +R23 +R37 +L43 +L2 +L52 +L19 +L85 +R88 +R813 +R28 +R69 +L97 +L43 +L47 +L440 +R60 +L30 +L17 +L22 +R72 +R67 +L21 +L610 +R78 +L47 +L64 +R164 +R49 +R51 +R1 +L401 +R67 +R36 +R32 +L915 +L870 +R49 +R1 +L70 +R470 +R305 +L72 +L70 +L63 +R26 +R94 +L791 +L9 +R12 +L278 +L854 +L52 +L10 +L68 +L1 +L69 +R711 +R26 +L85 +L5 +L147 +L52 +R72 +L9 +L11 +R42 +R68 +L10 +L49 +L21 +R74 +R67 +R65 +R90 +R74 +R305 +R58 +L43 +R68 +R39 +L24 +L3 +R30 +L30 +L6 +L894 +L98 +R98 +R19 +L99 +L167 +L53 +L87 +L99 +R312 +R20 +L58 +L88 +R95 +R5 +L60 +L8 +R87 +L82 +L59 +R22 +R8 +L8 +R49 +L35 +R86 +R75 +R43 +R82 +L718 +R11 +L99 +L61 +R67 +L10 +L190 +R47 +L92 +L55 +R18 +R16 +L64 +R44 +R93 +L7 +L35 +R635 +R92 +L35 +L395 +R738 +R97 +L97 +L35 +R50 +L815 +L65 +R23 +R59 +L817 +L8 +L83 +L29 +R504 +L84 +L85 +R81 +R324 +L70 +R650 +L123 +R23 +R51 +L82 +L69 +L814 +R630 +L79 +L14 +L50 +R35 +R992 +L796 +L63 +L41 +L75 +L72 +R447 +R431 +L20 +R29 +L40 +L55 +R885 +L47 +R17 +R11 +R89 +R70 +L70 +R27 +L387 +L40 +R59 +R65 +L72 +L41 +L88 +L670 +L41 +R88 +L123 +L861 +L164 +R10 +R583 +L470 +L64 +L72 +R84 +R14 +R63 +R34 +R70 +L4 +L718 +L63 +R181 +R70 +R3 +L24 +L39 +L210 +L97 +L76 +R21 +R68 +L16 +L75 +R975 +L62 +L93 +L45 +L24 +R6 +L91 +L891 +L31 +L213 +L42 +R28 +R31 +L21 +R80 +L32 +R51 +R49 +R21 +L21 +L51 +R81 +R80 +R79 +R11 +L74 +R909 +R65 +R53 +R46 +R1 +R59 +L163 +L811 +R423 +R26 +R25 +L82 +R723 +R38 +R683 +R779 +L20 +R57 +L13 +R176 +L57 +L74 +R164 +L33 +R48 +L19 +R13 +L11 +L931 +R835 +L49 +L786 +L26 +L10 +L92 +L80 +L69 +R37 +R74 +L34 +L77 +L57 +R527 +L593 +R359 +L78 +L69 +L2 +R90 +L7 +L93 +R10 +R550 +R89 +R73 +R178 +R26 +R74 +R15 +L3 +L523 +L28 +L619 +R57 +R37 +L236 +L74 +L26 +R87 +R55 +R20 +R38 +L98 +L97 +R88 +R552 +L7 +R86 +L84 +R148 +R21 +L92 +R97 +L14 +R8 +L15 +R5 +R66 +R427 +L79 +L45 +R33 +R29 +L61 +L11 +L91 +L780 +L86 +L72 +L28 +R76 +R93 +L34 +R865 +L47 +L53 +R55 +L589 +R34 +R30 +R47 +R43 +R80 +R70 +R30 +R257 +R637 +R14 +R4 +L502 +L810 +L70 +R84 +L4 +R48 +R6 +L56 +R20 +L31 +L46 +R149 +L98 +L102 +R63 +L78 +R46 +L73 +L16 +L42 +R37 +L337 +R92 +R68 +L29 +R92 +L289 +L34 +R48 +L9 +L239 +L23 +R385 +L82 +R20 +R24 +R76 +L413 +R13 +R38 +L93 +R55 +L99 +L1 +R75 +R91 +L542 +L24 +L22 +L78 +L68 +R277 +L91 +R38 +R26 +L82 +L55 +L33 +L770 +L77 +L65 +L55 +R83 +L60 +R368 +L36 +L614 +R92 +L27 +L51 +R15 +L45 +R30 +L435 +L723 +R75 +R601 +L18 +R60 +R98 +R46 +L4 +L70 +R78 +R51 +R692 +L151 +R38 +R16 +R46 +R27 +R61 +L5 +R38 +R435 +R10 +L66 +R54 +R20 +R526 +R41 +R44 +L34 +R94 +L245 +R65 +L75 +R769 +L75 +R16 +L19 +L81 +R91 +R9 +R70 +L70 +R54 +L396 +R247 +L30 +L81 +R606 +R7 +L7 +R6 +R2 +L564 +L25 +R15 +L65 +L69 +L78 +L93 +R358 +R674 +L61 +L15 +L153 +L32 +L33 +L67 +L51 +L82 +R35 +R44 +R54 +L66 +L498 +R64 +L44 +L92 +R26 +R10 +L73 +R46 +L73 +L41 +L61 +L98 +R507 +L7 +L76 +R88 +L31 +R4 +R37 +L22 +L4 +R404 +R74 +R78 +R48 +R49 +L49 +L53 +L91 +R44 +R27 +R73 +L75 +R75 +R77 +R51 +R7 +R16 +L932 +R50 +L69 +R8 +R92 +L21 +L872 +R318 +L325 +L98 +L70 +R7 +R36 +R53 +R72 +L580 +L20 +L90 +R88 +R57 +L55 +R89 +R5 +L715 +R28 +L7 +R50 +L50 +R8 +R92 +L87 +L764 +R26 +L75 +R4 +L65 +R61 +L14 +L25 +L50 +R89 +R70 +R30 +L26 +L74 +L63 +R1 +R342 +L80 +L94 +R94 +L29 +L492 +L28 +R52 +L86 +L75 +L50 +R732 +L24 +L61 +R21 +L60 +L836 +R43 +L75 +R80 +R52 +R36 +R323 +L40 +R22 +L80 +R7 +R60 +R51 +L7 +R16 +L57 +R5 +R20 +R279 +R1 +L64 +L271 +R68 +L80 +R78 +L31 +L80 +R7 +L94 +L77 +R402 +L4 +L254 +R585 +R72 +L943 +R86 +R203 +R581 +L18 +R123 +L289 +L64 +L96 +R60 +L59 +R59 +R25 +R66 +L37 +L754 +R91 +R90 +R77 +R77 +L16 +L19 +R75 +R25 +L64 +R39 +R25 +L54 +L63 +L63 +L196 +L86 +R133 +R16 +R41 +R869 +R3 +L80 +R80 +R46 +R63 +L67 +R80 +L35 +R515 +R71 +L7 +R34 +L27 +L2 +R65 +R69 +L59 +R58 +L7 +R92 +L87 +R44 +L46 +R36 +R26 +L36 +L26 +R79 +L67 +L55 +R82 +R33 +L72 +L1 +L99 +R22 +L22 +L20 +L75 +R95 +L37 +R61 +R64 +L88 +L44 +R44 +R59 +R82 +R19 +R62 +L47 +R25 +L42 +R28 +L74 +L24 +R82 +L70 +L27 +R91 +L67 +L77 +R89 +R91 +R1 +R79 +L93 +L53 +R66 +L12 +R34 +L50 +L9 +L1 +L43 +L32 +L13 +R17 +R14 +R43 +R40 +L4 +R29 +L31 +L24 +L6 +L24 +R29 +L8 +L19 +R12 +L18 +R7 +R4 +L36 +R4 +R5 +L35 +R12 +L45 +R39 +R29 +L36 +R3 +L11 +R23 +L22 +L41 +R14 +R26 +L30 +L47 +R40 +L37 +R24 +R32 +R28 +L44 +L47 +R9 diff --git a/src/days/benchmark_test.go b/src/days/benchmark_test.go new file mode 100644 index 0000000..eea4d10 --- /dev/null +++ b/src/days/benchmark_test.go @@ -0,0 +1,46 @@ +package days + +import ( + "os" + "path" + "runtime" + "testing" +) + +func init() { + // Changing into root dir of project + _, filename, _, _ := runtime.Caller(0) + dir := path.Join(path.Dir(filename), "..", "..") + err := os.Chdir(dir) + if err != nil { + panic(err) + } +} + +func BenchmarkDays(b *testing.B) { + benchmarks := []struct { + name string + lfn func() []string + fn func([]string) int + expected int + }{ + {"Day 1", Load_Day_1, Day01, 1150}, + } + + for _, bm := range benchmarks { + // Loading data for the current day + data := bm.lfn() + + // Just for good measures + b.ResetTimer() + + b.Run(bm.name, func(b *testing.B) { + for b.Loop() { + res := bm.fn(data) + if res != bm.expected { + b.Fatalf("invalid result: got %d, want %d", res, bm.expected) + } + } + }) + } +} diff --git a/src/days/day_1.go b/src/days/day_1.go new file mode 100644 index 0000000..c1558f8 --- /dev/null +++ b/src/days/day_1.go @@ -0,0 +1,72 @@ +package days + +import ( + "bufio" + "log" + "os" + "strconv" +) + +// numbers from 0 to 99 in order +// instructions contain order to turn L(eft) or R(ight) +// instructions contain the distance to turn +// left reduces the number +// right increases the number +// +// L => 76 +// R => 82 +// +// dial starts at 50 by default +// +// examples: +// 11 -> R8 => 19 -> L19 => 0 + +func Load_Day_1() []string { + var lines []string + + file, err := os.Open("inputs/day_1.txt") + if err != nil { + log.Fatalf("failed to open file: %s", err) + } + defer file.Close() + + scanner := bufio.NewScanner(file) + + for scanner.Scan() { + line := scanner.Text() + lines = append(lines, line) + } + + return lines +} + +func wrap(n int) int { + min := 0 + max := 99 + rangeSize := max - min + 1 + + return ((n-min)%rangeSize+rangeSize)%rangeSize + min +} + +func Day01(instructions []string) int { + c := 0 + position := 50 + for _, i := range instructions { + len, err := strconv.Atoi(i[1:]) + if err != nil { + log.Fatalf("failed to convert string to int: %s", err.Error()) + } + + if i[0] == 76 { + position = wrap(position - len) + } else { + position = wrap(position + len) + } + + if position == 0 { + c++ + } + } + + return c +} diff --git a/src/main.go b/src/main.go new file mode 100644 index 0000000..43b5407 --- /dev/null +++ b/src/main.go @@ -0,0 +1,15 @@ +package main + +import ( + "fmt" + + "git.gulaschkanister.de/julian.dnr/AoC-2025/src/days" +) + +func main() { + data := days.Load_Day_1() + + res := days.Day01(data) + + fmt.Println(res) +}