diff --git a/2025/day01/go.mod b/2025/day01/go.mod new file mode 100644 index 0000000..03f29ac --- /dev/null +++ b/2025/day01/go.mod @@ -0,0 +1,3 @@ +module tangled.org/seth.computer/advent-of-code/2025/day01 + +go 1.25.7 diff --git a/2025/day01/input.txt b/2025/day01/input.txt new file mode 100644 index 0000000..9d0b4ed --- /dev/null +++ b/2025/day01/input.txt @@ -0,0 +1,4081 @@ +L3 +R19 +R14 +L38 +R4 +L34 +R50 +R28 +L43 +R5 +R33 +R4 +R2 +R24 +L42 +L20 +R36 +L19 +R48 +R20 +L12 +R31 +R35 +L19 +R9 +R27 +R49 +L26 +R20 +R10 +R3 +R9 +L19 +R32 +L50 +L16 +R45 +L48 +L41 +R44 +L22 +L45 +R1 +L11 +L43 +L30 +R46 +R14 +L44 +R70 +L23 +L34 +R57 +R43 +L2 +R90 +L88 +R79 +R21 +R49 +L12 +L88 +L80 +L95 +L14 +L93 +R22 +L59 +R87 +R83 +L32 +R32 +R16 +R25 +L18 +L11 +L12 +R65 +L9 +R21 +L72 +R95 +L53 +R53 +R68 +L22 +R54 +R78 +R48 +L48 +R22 +R7 +R77 +L28 +R35 +L73 +L90 +L49 +L79 +R78 +L95 +R43 +R89 +R67 +L182 +R9 +R91 +L31 +R231 +R82 +R9 +L32 +R39 +R631 +L57 +R95 +R98 +R22 +L57 +L30 +R29 +L6 +L2 +R39 +R40 +R30 +L81 +R51 +L14 +R7 +L558 +R62 +L97 +R1 +R22 +L23 +R67 +L66 +R9 +L651 +R52 +L11 +R16 +L96 +L920 +R31 +L431 +L2 +L98 +R14 +R316 +R30 +R59 +L19 +R44 +R56 +L32 +R32 +R78 +L17 +R28 +L189 +L57 +R25 +R32 +R16 +R84 +L82 +R69 +R22 +R2 +L11 +L92 +L8 +L60 +R65 +R95 +R24 +R53 +L683 +R16 +L710 +R27 +R73 +R92 +R66 +R94 +R45 +L10 +R37 +L24 +L250 +R7 +R43 +R15 +L672 +L40 +L3 +R211 +R89 +R92 +R98 +L25 +R57 +R26 +R852 +R15 +L15 +L184 +L2 +L4 +L750 +R40 +L75 +R62 +R514 +L1 +L81 +R52 +R95 +L66 +L4 +R4 +R46 +L3 +R12 +L55 +L75 +L40 +R15 +L2 +R11 +L2 +L955 +R48 +L54 +R49 +R5 +L98 +R498 +L4 +R24 +L25 +L95 +L28 +R28 +R33 +L33 +L89 +R415 +R437 +R85 +R44 +R8 +R534 +L22 +L12 +R21 +L110 +L55 +L56 +R44 +R10 +R54 +L6 +L44 +R20 +L84 +R60 +R212 +R27 +R45 +L38 +R58 +R58 +L480 +R464 +L52 +L93 +R28 +R517 +R21 +R98 +L51 +R332 +R938 +L38 +L19 +L3 +L78 +L55 +L19 +L326 +R125 +R75 +R83 +L83 +R17 +L82 +L88 +L10 +L37 +R28 +L78 +R50 +R4 +R84 +L9 +R40 +R381 +L542 +L523 +L242 +R62 +R45 +R895 +L75 +R39 +R41 +L28 +R472 +L44 +L14 +L96 +R10 +R11 +R89 +R52 +R48 +R221 +L87 +R92 +L90 +L36 +L282 +L45 +R27 +L92 +R92 +L71 +R771 +R59 +R43 +R98 +R556 +L10 +L46 +R4 +R43 +L53 +R63 +R99 +L56 +R51 +L51 +L101 +L99 +L75 +R80 +R39 +L58 +R74 +L60 +L9 +L49 +R93 +R33 +L74 +L627 +L67 +R73 +L15 +R537 +L397 +R35 +L39 +L124 +R88 +R172 +L30 +R30 +L30 +R98 +R402 +R47 +R446 +R13 +R94 +L137 +R49 +R95 +L10 +R68 +L365 +R58 +R51 +L477 +R32 +R76 +L778 +R41 +L875 +L28 +L381 +R83 +R73 +L82 +R407 +L791 +L581 +L68 +R884 +L44 +L30 +R30 +L31 +R17 +L23 +L63 +L51 +R68 +R33 +R50 +L77 +L19 +R70 +L74 +R95 +L96 +L99 +L64 +R64 +R60 +R355 +L69 +L76 +R68 +R41 +R5 +R16 +R88 +R12 +L840 +R37 +L797 +R59 +L20 +L32 +R83 +R392 +L896 +R11 +R203 +R482 +L82 +L34 +R5 +L71 +L52 +R2 +R364 +R86 +L31 +L3 +R33 +R81 +R56 +R54 +R91 +L57 +L49 +R25 +R84 +R816 +R855 +R89 +R556 +R41 +L41 +L48 +L716 +L959 +L20 +R43 +R98 +L36 +R938 +L62 +L38 +L70 +R61 +R9 +R51 +R54 +R29 +L68 +R61 +L27 +R98 +L48 +L50 +R88 +L88 +R33 +R967 +L75 +L168 +R43 +R71 +L79 +L12 +R94 +R76 +R50 +R460 +L60 +L62 +L21 +L10 +R41 +R90 +L961 +L77 +R9 +L209 +R37 +L95 +R58 +L52 +R52 +R88 +L64 +R652 +L76 +L240 +L160 +R521 +L955 +L94 +L95 +R23 +L73 +L227 +L880 +R80 +R694 +L528 +L748 +R28 +R654 +L72 +R472 +R219 +R81 +L67 +L6 +R82 +R75 +R63 +L611 +R64 +L957 +L89 +R42 +R4 +L917 +L49 +R77 +L56 +L46 +R91 +L70 +L30 +R937 +R20 +R2 +R68 +R22 +R68 +L28 +L23 +L13 +R64 +L757 +R38 +L128 +R56 +R74 +L97 +R93 +R4 +L137 +R62 +R39 +L49 +L11 +R304 +L66 +L36 +L6 +R84 +R49 +R67 +L99 +L659 +L42 +L27 +R27 +R74 +L86 +R10 +R3 +R99 +R182 +R18 +L25 +R25 +R63 +R79 +L59 +L283 +R21 +L5 +L96 +R764 +L84 +R49 +R33 +R42 +R76 +R47 +L47 +R29 +R4 +L87 +R86 +L92 +L40 +R79 +L896 +L29 +R646 +R48 +R142 +L490 +R260 +R61 +R364 +L85 +L942 +L735 +R77 +R543 +R47 +R18 +L15 +L93 +R92 +L92 +L418 +L96 +L86 +L38 +R90 +R590 +L24 +R16 +R26 +L11 +R76 +L25 +L165 +L18 +L27 +L44 +L64 +L82 +R74 +R62 +L97 +L446 +R824 +R83 +R27 +L6 +L21 +R489 +L89 +L19 +L48 +R3 +L21 +L878 +L738 +R1 +L11 +R55 +L88 +R50 +R94 +L16 +L27 +R21 +L14 +L64 +R82 +L47 +L35 +R358 +R87 +L845 +R20 +R580 +L701 +L99 +L29 +L82 +L32 +L29 +L59 +R13 +L94 +R41 +L2 +R863 +R56 +L72 +L13 +R107 +L90 +L45 +L20 +L13 +R975 +L491 +L89 +R787 +R29 +R53 +R84 +L48 +R21 +L21 +R50 +L268 +R33 +R985 +L35 +L39 +R33 +R2 +L61 +R38 +L56 +R18 +R58 +R142 +R34 +L5 +R24 +R37 +L90 +L959 +L41 +L84 +R187 +L674 +R71 +R408 +R666 +R26 +R281 +R13 +R348 +R258 +R14 +L614 +L841 +L59 +L14 +R89 +L87 +L88 +R87 +L48 +L22 +R383 +L66 +R52 +L36 +L850 +R77 +L164 +R87 +L153 +L47 +R167 +L67 +L20 +L80 +R361 +L90 +L10 +L61 +L31 +R31 +L10 +L90 +R410 +R24 +R66 +L579 +L55 +R31 +R16 +L313 +R7 +R49 +R201 +R43 +L66 +R66 +L83 +L17 +R73 +L545 +R99 +R85 +R74 +R14 +R34 +R920 +R46 +R48 +L48 +L80 +L99 +R21 +R58 +R731 +R69 +R813 +R87 +L54 +R683 +R9 +L376 +L74 +L60 +L976 +R48 +R80 +L51 +L68 +L61 +R55 +R63 +L361 +L45 +L12 +L60 +R79 +R3 +R395 +R56 +R27 +L571 +L63 +L66 +L95 +R36 +L81 +R43 +R184 +R513 +L71 +L625 +L50 +R746 +L14 +R16 +L61 +L82 +L9 +L150 +L493 +L30 +R12 +L89 +L947 +L153 +R14 +R76 +L714 +R24 +R91 +L56 +L52 +R17 +L5 +L87 +L29 +L937 +L30 +R10 +R78 +L499 +R99 +L49 +L485 +R51 +R83 +R50 +R250 +L86 +L54 +R75 +R519 +R75 +L68 +L61 +L950 +R33 +L83 +R280 +L43 +R663 +R137 +R71 +L66 +R58 +L75 +L48 +R423 +R775 +L75 +L1 +R30 +R28 +L57 +L63 +R55 +L33 +R115 +R656 +L38 +R99 +R98 +R11 +L60 +L41 +R1 +R563 +R37 +R47 +R53 +R78 +L25 +L367 +R86 +L39 +L533 +L39 +R13 +L20 +L9 +R180 +L97 +L705 +R97 +L820 +R66 +R30 +R33 +R776 +R892 +R92 +L7 +L41 +L41 +R894 +R6 +L66 +L39 +L65 +R620 +R250 +R56 +R444 +L94 +R68 +L37 +R63 +R93 +R38 +R598 +L221 +R642 +L77 +L48 +L625 +L556 +R55 +L79 +R418 +R27 +R35 +R80 +L17 +R446 +R91 +L47 +R149 +L44 +R11 +R31 +L95 +L7 +R402 +R50 +L401 +L49 +L24 +R2 +L83 +L95 +R12 +R54 +L3 +R37 +L33 +L467 +L8 +L92 +L39 +L998 +L63 +R97 +L59 +R8 +L116 +L28 +R2 +R71 +R56 +R69 +R28 +L12 +R43 +L62 +L48 +R26 +R3 +L93 +L85 +L27 +L734 +L4 +R80 +L15 +L87 +L873 +L719 +L37 +L284 +R22 +R84 +R54 +L60 +L71 +L72 +L57 +R85 +R15 +R990 +R10 +R258 +R26 +R16 +L35 +L65 +L34 +R37 +R82 +L9 +R24 +R45 +L83 +R38 +R5 +R55 +R24 +R74 +L158 +R590 +R10 +R743 +R54 +L97 +R88 +R66 +R46 +R18 +L5 +L913 +R985 +L85 +R3 +R97 +R45 +R415 +R142 +R40 +R89 +R42 +L96 +L77 +R50 +L250 +R88 +L18 +R30 +R61 +L6 +R22 +L77 +L695 +L29 +L95 +L81 +R564 +L64 +R99 +R68 +L86 +L67 +R323 +L37 +L476 +L124 +R52 +L873 +L6 +L54 +L80 +L15 +L74 +R850 +L55 +L745 +L91 +R91 +R12 +L324 +R12 +R257 +L33 +R1 +L24 +L1 +R27 +L127 +L235 +R35 +R37 +R63 +R88 +R12 +R48 +R52 +L94 +R53 +R17 +L57 +R51 +R494 +L52 +L50 +L32 +L30 +R12 +R85 +L97 +R28 +L70 +L63 +R1 +R62 +R17 +L396 +R74 +R547 +L58 +R58 +R42 +L42 +R64 +L34 +L430 +R287 +R78 +L65 +L28 +R28 +L81 +R36 +R82 +L81 +R27 +L983 +R96 +L182 +R65 +L94 +R46 +L75 +R44 +R27 +L9 +R82 +L62 +R62 +L19 +L749 +R17 +L49 +R70 +R1 +R29 +R85 +L675 +R90 +L55 +L568 +L77 +L39 +L60 +L66 +L85 +L38 +R28 +R57 +L968 +R315 +L844 +R213 +R185 +R83 +L81 +R334 +L34 +L513 +R13 +L87 +L13 +R14 +L863 +L10 +L17 +L66 +R70 +L76 +R42 +L605 +L27 +L62 +L2 +L62 +L43 +L644 +L8 +L65 +R524 +L61 +L939 +L80 +L40 +L64 +L52 +R22 +R14 +L3 +L97 +R33 +L8 +R62 +L53 +R367 +R299 +R52 +L69 +R35 +R54 +L72 +R58 +R76 +R69 +R43 +R40 +L79 +R93 +R213 +L997 +R84 +R80 +L80 +R97 +L36 +R39 +R8 +R77 +L685 +L502 +R95 +R832 +L46 +L62 +L217 +L4 +R74 +L9 +R66 +L27 +L738 +R57 +L19 +R711 +R89 +R31 +R69 +R53 +L45 +R40 +R67 +L67 +L46 +R39 +L41 +R33 +L56 +R23 +R41 +R41 +R18 +R69 +L22 +R44 +L91 +L15 +R17 +R41 +L43 +L83 +L28 +L28 +R91 +L652 +R31 +L2 +R85 +R96 +L21 +R88 +L77 +L84 +R75 +L25 +R16 +L28 +R88 +R89 +R94 +R875 +L68 +L32 +R3 +R97 +R53 +R12 +L65 +L1 +R503 +L2 +R114 +L14 +L91 +R11 +R79 +L402 +R97 +L708 +L286 +R94 +L27 +R68 +L11 +R56 +R80 +L68 +L34 +R42 +L789 +L89 +R78 +R12 +R12 +R942 +R44 +R16 +R74 +L27 +R54 +L13 +R86 +L49 +R83 +L134 +R9 +L48 +L28 +R80 +R87 +R83 +L857 +L67 +L33 +R54 +L50 +R170 +R75 +R18 +L31 +L27 +R65 +R42 +L27 +R308 +R77 +R761 +L83 +R522 +R87 +L53 +R66 +R18 +L865 +R47 +R519 +R73 +L45 +L47 +L75 +R75 +L91 +R91 +R48 +L56 +R46 +R851 +L266 +L23 +L23 +L77 +L597 +L39 +L511 +R47 +L69 +R878 +R17 +R74 +R27 +L89 +L81 +R37 +R706 +R698 +R76 +L87 +L97 +L9 +L183 +L98 +R78 +L35 +L37 +L96 +R99 +R91 +L52 +L48 +L62 +R8 +R57 +L3 +R88 +L92 +L96 +L44 +R799 +L55 +R57 +L95 +R538 +L24 +R70 +R54 +L7 +L912 +L81 +L68 +L25 +L32 +L194 +R63 +L89 +R45 +L1 +R1 +R23 +R46 +R131 +R86 +R14 +L60 +R25 +L705 +R22 +R18 +R51 +R38 +R63 +R48 +L278 +L24 +R9 +R96 +R497 +L723 +L17 +R23 +R17 +R12 +L63 +R51 +R90 +R93 +L83 +R81 +R86 +R217 +R16 +R440 +L57 +L526 +R27 +R6 +R38 +L29 +L33 +R86 +L230 +L142 +R38 +L618 +R98 +R795 +R43 +L71 +L94 +L71 +R56 +L72 +L73 +L28 +R97 +R23 +R97 +R434 +L85 +R439 +L88 +R60 +R43 +R97 +L454 +L21 +L5 +L20 +L22 +L75 +R555 +R58 +R30 +L207 +L89 +L50 +L91 +R74 +L53 +L30 +R365 +R83 +L965 +L39 +L507 +R36 +L73 +L88 +R88 +L26 +R93 +R33 +L85 +R218 +R23 +R764 +L20 +R69 +R16 +L62 +R110 +L43 +L90 +R32 +L34 +L14 +R20 +R96 +R76 +R35 +L67 +L44 +L61 +R166 +L5 +R95 +R6 +R99 +R94 +R10 +R82 +R87 +L54 +R881 +L10 +L429 +R575 +L74 +L62 +L36 +R77 +R58 +L54 +L56 +R811 +R63 +R74 +R73 +R89 +L28 +R29 +R99 +R301 +R13 +L56 +L57 +R71 +L58 +L60 +R47 +L14 +R30 +L416 +R38 +R86 +R628 +L52 +R26 +L83 +L65 +R51 +L31 +R2 +R38 +R25 +R37 +L75 +R93 +R82 +R79 +L86 +L50 +R761 +L51 +R47 +R572 +R28 +L20 +L33 +R227 +R19 +R7 +L7 +L93 +R387 +L87 +R107 +R93 +L94 +R66 +R28 +L86 +L71 +R69 +L12 +R8 +L299 +L9 +L55 +R91 +L408 +R22 +R19 +R94 +R49 +L36 +R24 +L42 +L30 +L22 +R170 +L44 +R301 +R551 +R857 +R59 +L9 +R9 +L26 +R26 +L39 +L69 +R84 +R67 +L89 +R35 +L14 +L48 +L527 +R64 +R52 +R75 +R27 +R70 +L68 +R31 +R12 +L614 +R7 +R944 +L62 +L7 +L17 +R63 +L32 +L37 +L8 +R56 +L2 +L254 +L35 +R19 +R95 +R21 +R62 +L20 +R840 +R46 +R72 +L70 +L30 +L290 +L973 +L37 +L50 +R51 +L70 +R21 +L52 +R181 +L92 +R4 +R765 +R46 +L31 +L92 +R923 +R196 +R35 +R68 +R45 +R52 +L22 +L78 +L23 +R55 +R405 +R63 +R20 +L71 +R94 +R18 +R53 +L14 +R708 +R43 +R60 +R92 +R97 +R372 +L72 +L38 +L38 +L59 +R7 +R28 +R81 +R9 +L90 +L624 +R24 +L13 +L87 +R454 +R617 +R27 +R70 +R32 +L196 +R96 +R6 +R88 +R221 +R540 +R64 +L79 +R56 +R304 +R87 +R67 +L66 +L4 +L384 +R73 +L30 +L43 +R52 +L53 +L182 +R883 +L81 +R607 +L96 +R4 +R620 +L619 +L88 +R95 +L42 +L97 +R64 +R69 +R699 +L35 +L569 +L31 +R27 +R77 +L4 +L45 +R87 +R644 +L985 +R11 +L12 +L55 +L923 +L22 +L35 +R61 +R135 +L51 +R90 +R72 +L261 +R20 +R97 +R72 +L4 +R4 +R49 +L49 +R27 +L4 +L10 +R854 +R533 +R15 +R85 +L6 +R52 +L28 +R273 +R9 +L735 +R35 +R16 +L88 +L848 +L80 +R27 +R38 +R971 +R66 +R178 +R12 +R2 +R71 +L25 +R977 +R491 +R74 +L40 +L91 +L51 +L62 +L38 +L56 +R65 +R14 +L74 +L91 +L657 +R98 +L99 +R66 +L18 +L749 +R1 +R46 +R54 +R53 +L53 +R8 +L8 +L66 +L63 +L90 +L585 +L19 +L8 +L889 +L38 +R74 +R284 +R17 +L73 +L844 +L9 +R29 +R98 +L509 +L65 +L30 +L14 +R76 +R24 +R5 +R5 +R790 +R954 +L84 +R24 +L6 +R11 +L99 +L88 +L12 +R21 +L21 +L53 +R53 +R81 +L37 +L62 +L276 +R21 +R73 +R30 +L19 +L611 +L20 +R20 +R71 +L50 +R379 +R72 +R92 +R36 +R2 +L147 +L64 +R709 +R6 +L60 +R67 +L2 +R62 +R79 +L52 +L661 +L39 +R39 +R61 +R81 +L82 +R12 +L21 +L76 +L72 +R39 +L14 +R47 +R186 +R88 +L488 +L11 +L635 +L97 +L24 +L33 +R75 +L46 +L87 +L623 +L43 +R24 +L22 +L43 +L762 +L39 +L342 +L63 +L52 +R3 +R13 +R938 +L31 +R28 +L2 +R6 +R70 +L2 +R81 +R19 +R705 +R162 +L61 +R83 +L41 +L512 +R29 +R35 +L93 +L45 +R538 +L23 +R23 +L749 +R86 +L337 +L31 +R56 +L65 +R40 +R22 +R23 +L503 +R99 +R9 +R24 +R26 +L40 +L52 +R92 +L73 +R802 +R71 +L9 +L31 +R842 +L2 +R8 +L8 +R12 +L41 +L73 +L13 +R15 +L23 +R73 +R50 +L26 +L44 +L705 +R35 +R40 +R80 +R90 +R630 +R28 +R37 +R96 +R39 +R267 +L83 +L917 +R33 +R36 +L16 +R66 +L96 +R28 +R5 +R71 +R903 +L65 +L83 +L61 +R84 +L26 +R637 +R72 +R26 +R44 +L22 +L3 +L83 +R11 +L69 +L94 +R35 +R710 +R90 +R12 +R626 +R17 +L88 +R33 +R196 +L96 +L553 +R53 +R20 +L26 +R633 +R93 +L849 +L54 +L68 +L54 +R5 +R63 +L63 +R71 +L76 +L995 +R69 +R31 +L60 +L94 +L630 +R756 +R79 +L18 +R71 +R96 +R86 +L21 +L65 +R497 +L797 +R86 +R414 +L87 +L63 +L50 +L13 +L476 +L67 +R56 +R11 +L3 +L60 +R50 +L66 +L3 +R68 +L45 +R48 +R81 +R19 +L89 +L1 +R90 +L8 +L92 +R3 +L403 +L37 +R61 +R84 +L11 +L36 +L23 +L54 +L61 +R708 +R22 +R47 +L44 +R25 +L68 +R72 +L21 +L932 +R68 +L23 +R23 +L91 +R78 +R69 +R69 +L19 +R3 +L559 +L98 +R531 +R4 +R213 +L68 +R87 +L67 +L35 +R23 +R632 +R243 +R85 +L37 +R60 +R814 +L36 +R52 +L1 +L32 +L20 +L91 +R91 +R50 +L50 +L358 +L42 +L79 +R921 +R58 +L520 +L291 +R61 +R50 +L49 +L3 +L599 +R88 +R33 +R30 +R616 +L47 +L52 +L14 +R66 +L90 +R8 +R13 +L915 +R27 +L75 +L37 +L73 +R40 +L67 +R8 +R392 +R77 +L577 +L81 +L719 +L56 +L53 +L59 +R68 +L25 +R43 +L18 +L54 +R19 +L53 +L12 +L391 +R8 +L79 +R37 +L75 +L96 +R496 +L70 +R23 +L85 +R32 +L35 +L39 +R174 +R75 +R25 +R90 +L42 +L578 +R830 +L9 +R1 +R92 +L484 +R28 +L728 +R7 +R96 +R97 +L72 +L19 +L25 +L284 +L59 +R71 +L12 +L25 +L475 +L44 +R978 +L16 +L18 +R95 +L13 +L81 +R599 +L20 +L80 +L327 +R447 +L20 +R28 +L328 +R17 +L17 +R823 +L35 +R67 +L55 +L2 +R2 +R5 +R76 +L781 +R14 +R63 +L32 +L45 +L26 +R53 +R573 +R54 +L10 +L56 +L288 +L51 +L81 +L68 +L39 +R78 +R9 +L48 +R49 +R69 +R69 +R79 +R56 +R97 +R23 +L70 +R786 +L57 +L79 +R78 +L27 +R27 +L68 +R383 +L82 +L12 +R79 +L76 +L83 +L41 +R553 +R247 +R76 +L89 +R10 +L97 +L412 +L70 +R112 +L14 +L16 +R37 +R39 +R82 +L27 +R98 +L530 +R332 +L31 +R63 +L1 +L76 +R32 +R45 +L30 +L40 +R307 +L8 +R8 +R667 +L35 +R39 +R29 +L167 +R43 +L83 +R7 +R11 +R38 +R39 +L88 +L66 +R24 +L47 +L4 +L43 +L34 +L59 +R860 +R69 +L3 +R3 +L22 +L78 +L93 +R93 +R30 +R70 +R643 +L43 +R79 +L35 +R8 +L98 +R769 +L42 +L81 +R99 +L76 +L533 +L51 +R61 +R8 +R492 +R47 +L747 +L15 +L85 +L99 +R99 +R297 +R55 +R48 +R58 +R42 +L963 +L250 +R13 +R38 +R892 +L30 +R427 +R578 +L8 +L21 +R458 +L12 +R1 +L423 +L40 +R40 +R885 +L57 +L695 +L99 +L34 +L55 +R55 +L26 +L88 +L86 +L85 +L15 +L5 +L86 +R801 +L10 +R30 +L810 +L346 +R49 +L23 +L35 +R919 +R920 +L126 +R7 +L438 +R999 +R53 +L99 +L305 +L897 +L98 +R669 +R31 +R68 +L28 +R116 +L41 +R132 +R671 +L3 +R85 +L515 +L49 +R64 +L253 +L93 +R46 +R48 +R53 +R47 +R79 +R231 +R83 +R91 +L832 +R28 +L79 +L95 +L44 +L88 +R61 +R22 +L5 +R3 +L403 +L18 +R18 +L440 +L84 +L76 +L91 +R33 +R58 +L16 +L6 +L36 +L42 +R971 +R89 +R13 +R17 +L625 +R35 +R608 +L54 +R46 +L57 +L749 +R26 +R7 +L827 +L54 +L46 +R328 +R43 +L71 +L482 +R87 +R14 +R81 +R91 +L34 +L479 +R75 +L53 +R903 +L33 +L82 +L26 +L81 +R19 +R58 +L5 +R45 +R39 +L237 +R13 +R65 +R70 +R79 +L43 +L84 +R86 +L996 +R10 +L24 +R45 +L321 +L32 +R432 +L85 +R82 +R70 +L48 +R81 +R40 +L46 +L94 +R54 +R46 +R46 +L46 +R4 +L1 +L3 +R71 +L6 +L65 +R72 +R979 +R519 +R29 +R244 +R57 +L31 +R44 +R31 +L63 +L73 +L50 +R42 +R84 +L88 +R80 +R324 +L32 +R45 +L13 +L164 +L42 +L55 +R52 +L8 +R45 +L80 +R98 +L80 +R553 +R75 +R49 +R857 +L47 +L40 +L13 +L38 +R38 +R61 +R12 +L990 +L883 +L91 +L9 +L71 +R92 +R79 +R4 +R96 +L73 +R83 +L27 +R92 +L43 +R24 +R31 +R3 +R10 +L37 +R37 +R75 +R896 +L71 +L82 +L94 +L45 +R36 +R813 +L91 +L47 +R10 +R60 +R13 +L573 +L40 +L60 +L53 +R23 +R67 +L37 +R38 +R23 +R39 +R59 +R41 +R76 +L49 +L22 +L520 +L785 +R34 +R77 +L11 +L10 +R93 +R317 +L71 +L78 +R39 +L90 +L61 +L39 +L19 +R23 +L4 +R96 +L96 +L66 +L4 +R70 +L509 +L91 +L57 +R657 +R548 +L48 +R12 +L25 +R13 +L24 +R8 +R27 +R89 +R95 +R81 +L14 +L62 +R75 +L81 +L24 +L37 +R39 +R42 +L14 +R14 +R86 +R275 +R98 +R308 +R70 +R21 +L93 +L379 +L81 +R7 +L32 +R46 +L22 +R95 +L13 +L67 +L177 +R10 +L966 +R92 +R83 +L44 +R869 +R20 +L63 +R681 +L38 +L89 +L728 +L93 +L90 +R150 +L35 +L28 +L87 +L69 +R342 +R3 +R24 +R412 +R23 +L52 +L87 +L92 +R52 +R33 +R93 +R18 +R12 +R64 +R24 +L13 +L29 +R16 +R80 +R74 +R24 +R60 +R78 +R903 +L6 +R71 +L12 +R742 +R59 +L47 +L492 +L66 +R5 +R53 +L44 +L556 +L836 +L65 +L126 +L48 +L93 +R49 +R348 +R8 +L3 +R454 +L377 +R89 +R50 +L14 +L235 +L5 +L33 +R261 +L91 +L47 +R19 +R507 +R96 +R93 +R69 +L2 +R932 +R10 +L24 +R14 +L58 +L73 +L6 +R337 +L67 +R58 +R3 +R47 +L42 +R81 +R20 +R53 +L26 +L34 +R7 +R37 +L35 +R185 +L87 +L88 +R88 +L38 +R338 +L51 +R251 +L95 +L55 +L47 +L41 +R98 +L69 +R53 +R56 +L62 +L75 +R51 +R86 +L52 +L48 +R540 +R60 +R91 +L91 +L61 +L99 +R60 +L39 +L17 +L23 +L37 +L46 +L47 +L991 +R91 +L2 +L15 +R84 +L358 +L86 +R86 +R45 +R655 +R90 +R21 +R573 +R40 +R1 +R16 +L41 +L81 +L438 +R51 +L239 +R629 +L56 +L72 +L77 +L66 +L51 +L23 +L833 +R51 +R72 +R33 +L40 +L48 +R21 +L41 +R79 +R56 +R41 +R452 +R33 +R78 +R269 +R709 +L18 +R95 +L684 +R72 +R40 +L14 +L611 +L89 +R339 +L39 +R56 +R68 +L17 +R39 +L46 +L43 +R643 +L315 +R81 +R53 +L43 +L72 +L304 +R452 +L52 +R80 +R55 +L11 +R83 +L73 +R66 +R14 +R686 +L32 +R152 +L6 +R63 +R23 +L39 +R39 +R18 +R82 +R524 +R82 +L6 +R99 +L463 +R64 +R72 +R3 +R50 +L16 +L106 +L720 +L99 +R32 +R38 +L54 +L57 +R96 +L32 +L98 +R43 +L189 +R85 +R80 +L73 +L45 +R84 +R6 +R74 +R58 +L32 +L95 +L305 +L81 +L19 +L96 +R86 +R406 +L696 +L81 +L24 +L95 +L16 +R191 +R25 +R502 +R373 +R625 +R57 +R58 +R85 +R17 +L17 +L94 +R23 +R31 +L60 +R904 +R96 +R71 +L971 +L21 +R21 +R94 +L294 +R54 +L54 +L58 +L984 +L58 +R77 +L15 +L89 +L34 +R17 +R44 +R85 +R15 +R97 +L55 +L211 +R1 +L32 +R64 +R70 +L930 +R13 +R15 +L32 +R50 +R50 +L36 +R156 +L20 +L20 +R55 +L35 +R103 +R56 +R483 +R647 +L960 +L13 +R73 +L89 +L35 +L79 +R34 +R80 +R499 +R60 +L555 +R96 +R24 +L48 +R24 +L382 +L18 +R77 +R78 +L26 +R92 +L321 +R73 +L15 +L4 +R931 +L57 +L75 +L37 +L82 +R22 +R37 +R91 +L84 +R94 +L93 +L1 +L97 +L28 +L80 +L67 +R72 +L85 +R35 +L1 +L149 +L71 +R71 +R85 +R90 +R20 +L6 +L12 +R50 +R773 +R668 +R64 +L132 +R28 +L75 +L88 +L65 +L4 +L96 +R76 +L434 +R58 +R73 +R41 +R87 +R98 +R29 +R72 +R444 +L26 +L717 +R99 +R71 +L71 +L82 +L78 +R62 +R81 +R8 +R9 +L5 +L95 +L922 +R7 +L885 +L58 +L84 +L70 +L45 +R93 +R64 +L85 +R85 +L78 +R24 +R92 +R92 +R675 +L29 +R337 +R87 +R53 +L53 +L24 +L76 +R23 +R60 +L83 +R98 +L74 +L24 +L911 +L89 +R376 +L141 +R665 +L53 +L47 +R72 +L50 +R78 +L65 +R32 +L67 +R902 +R1 +R75 +L76 +R314 +L16 +R26 +L71 +R80 +L261 +R361 +L15 +L127 +R227 +R32 +L95 +L12 +R24 +L596 +L73 +L50 +L256 +L41 +R15 +L39 +L15 +L29 +R15 +L73 +R51 +L30 +R41 +L89 +R69 +L415 +R46 +R65 +L20 +R73 +R562 +R41 +R41 +R638 +R16 +R81 +R38 +L43 +L4 +L46 +R58 +R891 +R9 +R988 +L375 +L98 +L46 +R62 +R85 +R84 +R7 +L528 +L79 +R78 +L755 +L365 +R813 +R883 +R54 +R11 +R40 +R38 +R97 +L94 +L93 +L15 +L41 +R849 +R67 +R945 +L69 +L43 +R3 +L3 +L83 +R98 +R62 +R23 +L823 +L4 +L163 +L457 +L5 +L215 +L33 +L7 +L81 +R88 +R221 +R79 +L291 +L65 +L77 +L40 +R573 +L26 +L74 +R92 +L83 +L403 +R94 +R763 +L63 +R71 +R775 +R44 +R410 +L73 +L479 +R652 +R451 +L59 +L92 +L48 +L60 +R7 +L23 +R53 +L73 +R144 +R81 +R15 +R98 +L30 +L15 +R98 +L12 +L35 +L854 +L984 +R66 +L628 +L855 +L45 +R83 +L320 +R37 +L220 +R6 +L86 +L28 +L47 +L25 +L5 +L30 +R31 +L96 +L82 +R422 +R57 +L79 +R50 +L84 +L24 +L97 +R62 +L338 +R17 +L828 +L96 +R20 +R85 +L27 +R99 +R69 +R23 +R12 +L21 +R60 +R104 +L4 +R7 +R28 +R99 +R20 +L54 +L6 +L18 +L27 +R58 +R66 +R27 +L78 +R78 +R223 +L23 +L6 +L78 +L71 +R49 +L12 +L2 +R120 +L96 +R58 +R54 +R98 +R18 +L532 +R15 +L4 +L41 +R64 +L534 +R16 +L31 +R415 +L86 +R99 +L41 +L72 +L2 +R5 +L3 +L225 +R91 +L66 +R61 +R65 +L901 +L25 +R42 +R508 +L71 +L69 +L10 +R47 +L78 +R60 +R499 +R80 +R92 +L137 +L58 +L25 +L86 +R24 +R15 +L33 +L77 +L32 +R9 +R11 +R96 +L77 +R670 +L79 +R21 +R35 +L45 +L49 +R87 +L427 +L82 +L261 +R69 +R15 +L20 +R92 +R582 +R38 +L76 +R58 +R646 +L26 +L330 +L88 +R380 +L69 +R791 +R75 +L59 +R472 +R83 +L574 +R99 +L740 +L61 +R641 +L98 +R99 +R17 +R84 +L41 +L938 +R81 +L36 +R34 +L366 +R48 +R18 +R16 +R62 +L78 +R16 +R84 +R91 +R34 +R75 +L26 +R93 +L17 +R83 +R55 +R491 +R18 +L78 +R7 +L74 +L67 +R53 +R62 +L2 +L75 +R31 +R4 +R942 +R373 +L53 +R83 +R28 +R69 +L38 +R86 +R76 +L204 +R34 +L281 +L83 +R51 +R19 +L45 +R46 +L761 +R45 +R36 +L92 +L42 +L716 +R95 +L994 +L70 +L70 +L92 +R91 +R9 +R69 +L20 +R651 +L244 +L56 +L18 +R53 +R81 +R984 +L546 +R13 +R61 +R93 +R53 +R59 +L34 +L2 +R153 +L33 +R83 +R27 +L27 +L34 +L266 +L533 +R33 +L850 +R76 +R774 +L4 +L67 +L55 +L84 +R86 +R9 +R12 +R72 +R31 +L26 +L50 +L24 +L27 +L13 +R540 +R64 +L143 +R29 +R59 +R9 +R82 +L50 +R50 +L15 +R99 +L84 +L22 +R711 +L89 +R68 +R32 +R46 +R54 +L51 +R29 +R30 +L74 +L34 +L66 +R40 +R650 +L24 +R99 +L68 +R18 +L92 +R29 +R14 +L20 +R220 +L19 +L4 +R23 +L31 +R931 +R6 +R849 +R84 +L39 +R13 +L72 +L2 +R4 +R69 +L515 +R61 +R142 +L66 +L904 +L97 +L534 +R69 +R32 +R82 +R18 +L77 +R106 +R582 +L111 +L435 +L65 +L28 +L601 +R116 +R13 +L14 +L38 +L89 +R17 +R31 +L7 +L523 +R448 +R26 +L22 +R62 +L19 +R44 +L16 +L82 +R82 +R18 +L135 +L94 +R17 +R94 +R65 +R12 +L77 +R67 +L67 +L26 +L374 +L88 +L12 +L192 +L74 +L99 +L35 +R38 +L46 +R21 +R58 +L71 +R97 +R3 +R35 +L85 +R50 +R305 +R47 +L58 +R97 +L68 +R35 +L94 +R64 +R913 +R841 +R4 +L53 +L96 +L11 +R74 +L96 +L4 +R35 +R65 +R86 +L86 +L19 +R49 +R91 +L74 +L24 +R67 +L790 +R6 +L77 +R94 +R85 +L108 +R83 +R89 +R52 +L24 +R858 +L58 +R80 +R71 +L751 +L993 +L71 +L36 +L29 +L530 +R847 +R412 +L81 +L10 +L309 +R47 +L47 +R11 +L411 +R71 +R29 +R42 +L28 +L55 +R21 +L37 +R74 +R7 +R80 +R74 +L70 +R40 +L44 +R21 +L25 +R29 +L29 +R52 +L89 +R192 +R45 +L18 +R218 +R957 +L34 +R16 +L39 +R577 +R75 +L78 +L92 +L782 +L46 +L54 +R15 +L415 +L93 +L65 +L74 +L10 +L58 +L30 +L28 +R90 +R68 +L23 +L22 +L67 +L57 +L990 +R88 +R2 +L218 +R23 +L36 +L34 +L62 +R17 +L99 +R73 +R15 +R59 +L69 +L5 +L89 +R94 +R54 +L5 +R312 +L67 +L64 +L22 +L80 +R72 +R31 +L18 +R49 +L62 +R160 +R61 +L121 +R18 +L60 +R42 +R19 +R81 +R73 +L50 +R196 +R65 +R16 +L154 +R84 +R32 +R45 +R7 +L68 +L23 +L58 +L80 +R709 +L94 +L97 +L45 +L1 +L83 +R26 +R44 +R20 +L504 +L60 +L468 +R31 +L14 +L69 +R23 +R84 +R13 +R820 +R23 +R57 +R32 +L36 +L86 +R90 +L34 +L5 +R988 +L35 +R86 +L99 +R99 +L37 +L63 +L24 +R89 +R23 +L88 +R25 +R2 +L17 +L10 +R28 +R62 +L83 +R93 +L33 +R18 +L41 +R94 +L40 +L6 +L16 +R24 +L77 +R77 +R12 +R27 +R13 +L52 +L80 +R80 +L61 +R61 +L97 +L15 +R12 +R66 +L66 +L66 +R69 +L3 +R60 +R78 +L38 +L13 +L72 +L15 +R28 +L49 +L29 +L64 +L86 +L33 +R42 +L46 +R41 +R20 +L31 +R47 +R38 +R36 +R14 +L4 +R12 +R37 +L35 +R20 +R17 +R19 +R38 +R15 +R20 +R27 +R6 +R44 +L13 +R5 +L36 +L40 +R39 +L4 +L41 +L42 +L34 +L1 +L2 +L21 +R7 +L19 +L43 +R7 +R21 +R35 +R21 +L6 +L13 +L6 +R37 +R33 +L36 +R22 +R23 diff --git a/2025/day01/main.go b/2025/day01/main.go new file mode 100644 index 0000000..a12796a --- /dev/null +++ b/2025/day01/main.go @@ -0,0 +1,95 @@ +package main + +import ( + "bufio" + "fmt" + "log" + "os" + "strconv" +) + +func main() { + inputf, err := os.Open("input.txt") + if err != nil { + log.Fatalf("failed to open file: %v", err) + } + defer inputf.Close() + + // starting position + pos := 50 + timesAtZero := 0 + + scanner := bufio.NewScanner(inputf) + for scanner.Scan() { + line := scanner.Text() + turn, err := parseTurn(line) + if err != nil { + log.Fatalf("failed to parse turn: %v", err) + } + + pos = turn.apply(pos) + + if pos == 0 { + timesAtZero++ + } + } + + if err := scanner.Err(); err != nil { + log.Fatalf("scanner error: %v", err) + } + + fmt.Println(timesAtZero) +} + +type turn struct { + dir direction + count int +} + +func (t turn) apply(pos int) int { + switch t.dir { + case left: + pos -= t.count + case right: + pos += t.count + } + + return ((pos % 100) + 100) % 100 +} + +func parseTurn(line string) (turn, error) { + if len(line) < 2 { + return turn{}, fmt.Errorf("line too short: %q", line) + } + + dir, err := parseDir(line[:1]) + if err != nil { + return turn{}, err + } + + countStr := line[1:] + count, err := strconv.Atoi(countStr) + if err != nil { + return turn{}, fmt.Errorf("failed to parse %s as an int: %w", countStr, err) + } + + return turn{dir: dir, count: count}, nil +} + +type direction int + +const ( + left direction = iota + 1 + right +) + +func parseDir(s string) (direction, error) { + switch s { + case "L": + return left, nil + case "R": + return right, nil + default: + return 0, fmt.Errorf("invalid direction: %s", s) + } +}