commit a67e150d0fe47fc90eb48fbba2428578d897c520 Author: Daniel Ledda Date: Thu Dec 25 14:05:36 2025 +0100 update diff --git a/.clangd b/.clangd new file mode 100644 index 0000000..65215ff --- /dev/null +++ b/.clangd @@ -0,0 +1,5 @@ +CompileFlags: + Add: + - -std=c99 + - -xc + - -DOS_LINUX diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..06e6a8e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "djstdlib"] + path = djstdlib + url = https://git.djledda.net/Ledda/djstdlib.git diff --git a/app.c b/app.c new file mode 100644 index 0000000..d5b5c95 --- /dev/null +++ b/app.c @@ -0,0 +1 @@ +#include "./day3.c" diff --git a/build b/build new file mode 100755 index 0000000..fb7fa2f --- /dev/null +++ b/build @@ -0,0 +1,7 @@ +#!/bin/bash + +clang -g -g3 -lm -DOS_LINUX=1 -DENABLE_ASSERT=1 ./app.c -o ./target/app + +if [[ $1 == "run" ]] then + ./target/app +fi diff --git a/day1-input b/day1-input new file mode 100644 index 0000000..2de2b86 --- /dev/null +++ b/day1-input @@ -0,0 +1,4543 @@ +R20 +R10 +L11 +R45 +R13 +R32 +R46 +L20 +L1 +L26 +L33 +L6 +L34 +R50 +L41 +L8 +R16 +L20 +L39 +R40 +R30 +R47 +R20 +L44 +R16 +L1 +R50 +L23 +R32 +L2 +L1 +L10 +L28 +R13 +R46 +R39 +L17 +R44 +R24 +R32 +R18 +L41 +R11 +L48 +R7 +R1 +L21 +R37 +L43 +L71 +L50 +R84 +L36 +R66 +L64 +L5 +R34 +R32 +L61 +L14 +R83 +L69 +R94 +R17 +L11 +L63 +L37 +L25 +R70 +R48 +L1 +R5 +R29 +R87 +L49 +L96 +R88 +L56 +L76 +R37 +L73 +R49 +L93 +R56 +R79 +L79 +R85 +L79 +R70 +R24 +R38 +L88 +R46 +R76 +L72 +R64 +R83 +R53 +L36 +R38 +R41 +L60 +L234 +L35 +R948 +L176 +L86 +R97 +L52 +L31 +R65 +L513 +R234 +L47 +L84 +R38 +R93 +R43 +L43 +R36 +R64 +R47 +L84 +R637 +L39 +L528 +L48 +R54 +R21 +L431 +R371 +R92 +L601 +R65 +R44 +L401 +R57 +L320 +L924 +R88 +L2 +R2 +R52 +R45 +R12 +L9 +R26 +R937 +R74 +R63 +R44 +L86 +R342 +R72 +R438 +R41 +R20 +L71 +L64 +R44 +R27 +R10 +R83 +L96 +L501 +L303 +R83 +L83 +R57 +L89 +R60 +L10 +L18 +L78 +R23 +L819 +R18 +L68 +R93 +L65 +L22 +R64 +L346 +R74 +L97 +L77 +R90 +R99 +L89 +L358 +L24 +L18 +R19 +R902 +R18 +R42 +L16 +L67 +R7 +L61 +L44 +R58 +R56 +R86 +R77 +L197 +L48 +R276 +L82 +L65 +L45 +L44 +R12 +R835 +L719 +R47 +L35 +R988 +R6 +L92 +L196 +R82 +R36 +R95 +R69 +L52 +L17 +L531 +R13 +R87 +L69 +L31 +L17 +L66 +R83 +R10 +R85 +R5 +R543 +L1 +R55 +L646 +L47 +L50 +R7 +L719 +R673 +R85 +R399 +L13 +R86 +L60 +R788 +L605 +R5 +R872 +R24 +R54 +R86 +L47 +R74 +L63 +L72 +L28 +L579 +R81 +R98 +R79 +L1 +R722 +L48 +R6 +R41 +L99 +L26 +R26 +R64 +R50 +R88 +R520 +R57 +L779 +R83 +L71 +R399 +R89 +R92 +R68 +R940 +L44 +R44 +L151 +R15 +R70 +R566 +R79 +R6 +L85 +R958 +R79 +L54 +L42 +L159 +R52 +L93 +R50 +R48 +R83 +R78 +L36 +R36 +L77 +R77 +R24 +L61 +L12 +L19 +L232 +R36 +L36 +R12 +L85 +L27 +R65 +L65 +L16 +L51 +R67 +L78 +L87 +R71 +R94 +L217 +R11 +R779 +L98 +L68 +R14 +R16 +L95 +L42 +R80 +L830 +R50 +L51 +R51 +R93 +L438 +L783 +L28 +L44 +L64 +L45 +R809 +L26 +L274 +L56 +R97 +L88 +R75 +R4 +R3 +L27 +L12 +R4 +R41 +R8 +L46 +R85 +L888 +R47 +L8 +R824 +L67 +R58 +L177 +R723 +R44 +R56 +R70 +R30 +R97 +R43 +L39 +R99 +L78 +L196 +L87 +L39 +R42 +L528 +R86 +R20 +L920 +R916 +L16 +L19 +L92 +L17 +R38 +R43 +R90 +L57 +L58 +R72 +L54 +L26 +L9 +R66 +R41 +R74 +L86 +L6 +L39 +L72 +L5 +R17 +R99 +L3 +L50 +R7 +L56 +R2 +R15 +R18 +L60 +L73 +L980 +L20 +L69 +L31 +L998 +L16 +R29 +L15 +L136 +L71 +R7 +R59 +L19 +L40 +L56 +R60 +L97 +R93 +R87 +L587 +L1 +R1 +R99 +R5 +L4 +L89 +L70 +L62 +L559 +L50 +R88 +L58 +R23 +R77 +R406 +R22 +L28 +L455 +R55 +R15 +R43 +R62 +R686 +L6 +R19 +L19 +R44 +R34 +R40 +L348 +L294 +R92 +L342 +L92 +R918 +R48 +L24 +L76 +L865 +L59 +R13 +L89 +L6 +L79 +L105 +L71 +L39 +R226 +R274 +L35 +R61 +R33 +R5 +L64 +L88 +R24 +L731 +R53 +L58 +L87 +L85 +R72 +R67 +R4 +R86 +L288 +R721 +R87 +L77 +R88 +R14 +R98 +L744 +L656 +R81 +L81 +L93 +L974 +L25 +L453 +R31 +L14 +L72 +R43 +R45 +R18 +L881 +L25 +R82 +L184 +R99 +L181 +L55 +R39 +R80 +R320 +R686 +R6 +R64 +R483 +R22 +R19 +R88 +R73 +L33 +L8 +R89 +L89 +R13 +R32 +L45 +L72 +L93 +L535 +R36 +R24 +R47 +R593 +R25 +L72 +R447 +R17 +L17 +R23 +R1 +R53 +R23 +L75 +L95 +L13 +R5 +R18 +L13 +L6 +L21 +R64 +L304 +L160 +L509 +R509 +L98 +R579 +R19 +R76 +L7 +R331 +L99 +L1 +L222 +R72 +R50 +L8 +L88 +R96 +L84 +R84 +R690 +R37 +L27 +R452 +R80 +L43 +L85 +R96 +R10 +R33 +R57 +L70 +L30 +R19 +L183 +R52 +L349 +R888 +L27 +L821 +L18 +L66 +L95 +R23 +R977 +L18 +L811 +R47 +L18 +L76 +L24 +L78 +L22 +L29 +R29 +L42 +R22 +R96 +L76 +L47 +R47 +R128 +L28 +L56 +R56 +L82 +L48 +L50 +R88 +L916 +L9 +R1 +L32 +R48 +L356 +L85 +R51 +L70 +R24 +L98 +R34 +R124 +L58 +R60 +R526 +R948 +L90 +L68 +L42 +R972 +R28 +R23 +R77 +L83 +L637 +R52 +L132 +R57 +L957 +L88 +R88 +L179 +L921 +R10 +R90 +L12 +L88 +R2 +R98 +R956 +R44 +L4 +R59 +L55 +R89 +L51 +L41 +R54 +R55 +L6 +L27 +R27 +L53 +L47 +L98 +L228 +R35 +R11 +R35 +R33 +R12 +R39 +L238 +L1 +L94 +R51 +R543 +R15 +L937 +R92 +R20 +L12 +R21 +R87 +R14 +R45 +L745 +R70 +R59 +L52 +R31 +L8 +L7 +L898 +L78 +R83 +L6 +L88 +L260 +L413 +L76 +L98 +L359 +R19 +L51 +L68 +R76 +R424 +L23 +R75 +L249 +L3 +R63 +L263 +L21 +R21 +R75 +L915 +L60 +R147 +L63 +R48 +L95 +L931 +R94 +L86 +R32 +L46 +L26 +R43 +R813 +L30 +R71 +L70 +L1 +L51 +R16 +L855 +L360 +R60 +L26 +L8 +L559 +R183 +L21 +L72 +L7 +L195 +L72 +R67 +L63 +R63 +L7 +L66 +L727 +R55 +L66 +L889 +L68 +R25 +L321 +R7 +R48 +R59 +R60 +L72 +R19 +L57 +R59 +L56 +L28 +L186 +R11 +L53 +L342 +L50 +R4 +R41 +R2 +L8 +R906 +R6 +R42 +R60 +L90 +R82 +R24 +L60 +L64 +R50 +L50 +L3 +R85 +R68 +L850 +R74 +L93 +L614 +R55 +L22 +L52 +L2 +R6 +L201 +L18 +R81 +L514 +R61 +L77 +L955 +R71 +R47 +R78 +R375 +L760 +R60 +R54 +R395 +L55 +L94 +R794 +L94 +R47 +R44 +R402 +L42 +R564 +R85 +L18 +L99 +R12 +R63 +R7 +L65 +R83 +L36 +L47 +R267 +L58 +L9 +L97 +R41 +L44 +L55 +R55 +L58 +R6 +L61 +L187 +R66 +R41 +L64 +L88 +R5 +R63 +R42 +R509 +R77 +R540 +R98 +L51 +R99 +R63 +L62 +L66 +R28 +L96 +R56 +L20 +L40 +R17 +L282 +R65 +L8 +R8 +L15 +R15 +R38 +R84 +R78 +R73 +R27 +R32 +R59 +L10 +R19 +R49 +R51 +R89 +L55 +L65 +R76 +L6 +R11 +R50 +R99 +L36 +R37 +L7 +L614 +L25 +R31 +L585 +R56 +R36 +L92 +L56 +L383 +L79 +R55 +R63 +L52 +L748 +L41 +R860 +R82 +L98 +R897 +R75 +R26 +R1 +L81 +R17 +R760 +R31 +R9 +R62 +R43 +R43 +L82 +R96 +R3 +R76 +L79 +R87 +L334 +R84 +R14 +R30 +L81 +R2 +L788 +R86 +R74 +R26 +L941 +L4 +L55 +R8 +L478 +R20 +R83 +R19 +R48 +R69 +L488 +L44 +R55 +L92 +L78 +L75 +L47 +L95 +R62 +L234 +R67 +R70 +L35 +L40 +L13 +L32 +L950 +R59 +R62 +R275 +R4 +R672 +R93 +L6 +R23 +L382 +L278 +R110 +R68 +R35 +R43 +R96 +R604 +R408 +R14 +R108 +R33 +R59 +L19 +R19 +R85 +R24 +R15 +R14 +R62 +L49 +R83 +L551 +R17 +L4 +L63 +R38 +R95 +R34 +R59 +L695 +R636 +R19 +L98 +L30 +L691 +L147 +R8 +R9 +R732 +L2 +L47 +L53 +L64 +L36 +R24 +R40 +R99 +R27 +R410 +R83 +R14 +L524 +R27 +R72 +L64 +R92 +R69 +R323 +R49 +R56 +R3 +L54 +L81 +R82 +L47 +R28 +R96 +L6 +L653 +L36 +R413 +L19 +R15 +L352 +L26 +L63 +R622 +R13 +L51 +L81 +L68 +L32 +L55 +R55 +L98 +R49 +L54 +R48 +R46 +R9 +L34 +L15 +L19 +R273 +R695 +R43 +R492 +R38 +L473 +L13 +L89 +L83 +L5 +R90 +R68 +L706 +R106 +R8 +R84 +R30 +L190 +R91 +L55 +R64 +R85 +L85 +L57 +L17 +R74 +L82 +R82 +R826 +L37 +L32 +L36 +L66 +L21 +R82 +L16 +L27 +R77 +R46 +L989 +R9 +L63 +R47 +L89 +L76 +L740 +L49 +L46 +L52 +R86 +R8 +L85 +L27 +L430 +R40 +L40 +R34 +L34 +L89 +L41 +R98 +R32 +R31 +L13 +R553 +L71 +R20 +L948 +R28 +L86 +R186 +R5 +L5 +R96 +R59 +L55 +L32 +R26 +L70 +L24 +L677 +L244 +R13 +L92 +L999 +L97 +R96 +L606 +R6 +R4 +L4 +R47 +L30 +R83 +L141 +R947 +L78 +L913 +L15 +R68 +R7 +L75 +L18 +L82 +R15 +L73 +L42 +L13 +L684 +R97 +R47 +R53 +R24 +R38 +R23 +L51 +R39 +L73 +R35 +R22 +R14 +L71 +L47 +R58 +L30 +L81 +R28 +R731 +L27 +L38 +R6 +R96 +L51 +R55 +R65 +L49 +L1 +L95 +L534 +L86 +L40 +L42 +L70 +R50 +L98 +L59 +L95 +L35 +L9 +R16 +R682 +L997 +R218 +R530 +L48 +L551 +R48 +L43 +R43 +L80 +L792 +R29 +L22 +L82 +L76 +L52 +R75 +L29 +R71 +R593 +L39 +L596 +R71 +R89 +L27 +L33 +L77 +R59 +L76 +R67 +L426 +L389 +R90 +R74 +L22 +L49 +R101 +L52 +R34 +L69 +L13 +R92 +R810 +R688 +R58 +R614 +L14 +R77 +L47 +R70 +L40 +R840 +R91 +R54 +R14 +L258 +R99 +R84 +R67 +R62 +L64 +R48 +L197 +L20 +L74 +R74 +L880 +R10 +R55 +R35 +R68 +L774 +L44 +R875 +R63 +R807 +R13 +R92 +L392 +L74 +L34 +L66 +R44 +R120 +R802 +L29 +R6 +R23 +L492 +L8 +R83 +R80 +L5 +R42 +R92 +R77 +R24 +R77 +L2 +R32 +L12 +L88 +R97 +L85 +R88 +R57 +L957 +L68 +L40 +R56 +R452 +R47 +L47 +L610 +L90 +L92 +L808 +L62 +R94 +L20 +L68 +L17 +L177 +R563 +L13 +L89 +R71 +L282 +L41 +R548 +R87 +R26 +L92 +R695 +R67 +L10 +R20 +L81 +R37 +R44 +R317 +R83 +R39 +R168 +R93 +R89 +L26 +R19 +L19 +L44 +L19 +R227 +R30 +L79 +R5 +L83 +R9 +L19 +L90 +R525 +L42 +R65 +R87 +L35 +L68 +L119 +L53 +R40 +L47 +L453 +L71 +L29 +R1 +R80 +L25 +R9 +R24 +L89 +R12 +R88 +R44 +L44 +L36 +R80 +R32 +R24 +R86 +R6 +R11 +L66 +R63 +L110 +L90 +L69 +R369 +R49 +R65 +R82 +L96 +R85 +R15 +L10 +R210 +L355 +R55 +R51 +R31 +R30 +L64 +R752 +R17 +L87 +L30 +R79 +R718 +L897 +L66 +L634 +R138 +R62 +R96 +L96 +L122 +R18 +R88 +L29 +R44 +R430 +L45 +L97 +L51 +L76 +L60 +L66 +L34 +R992 +R25 +R69 +L52 +L534 +R72 +L71 +L1 +L30 +L70 +R55 +R45 +R1 +L19 +R3 +R53 +L15 +R94 +L391 +L84 +L20 +L408 +L14 +R19 +L29 +L60 +R46 +L76 +R26 +L785 +R59 +L45 +R13 +R32 +R71 +L23 +L9 +R61 +R414 +R22 +L24 +R104 +L5 +L311 +L14 +L750 +L36 +L755 +R55 +L95 +L39 +R46 +L40 +R28 +R5 +R77 +R18 +R11 +R60 +L71 +R13 +R32 +R55 +R823 +R89 +R88 +R49 +L65 +R3 +L87 +R98 +L32 +R86 +R87 +R57 +L71 +R44 +R99 +R364 +L49 +R20 +L8 +R9 +R607 +L62 +R51 +R923 +L41 +L99 +L953 +L8 +R52 +R426 +L48 +R303 +R45 +L49 +L51 +L22 +L3 +L10 +R11 +L81 +L471 +R76 +R50 +R750 +L41 +L79 +L23 +R13 +L4 +L57 +R91 +L89 +L369 +L42 +L39 +L86 +L56 +L719 +R345 +L45 +R28 +R72 +L92 +L47 +R85 +L49 +L97 +L78 +L822 +R11 +L63 +L48 +R11 +R544 +L55 +L24 +R62 +L38 +R50 +R50 +L46 +L32 +L21 +L74 +L35 +L10 +R43 +L84 +L8 +L833 +R40 +L82 +L78 +L16 +L73 +R9 +R965 +L65 +R41 +L941 +L77 +L76 +R53 +L37 +R1 +R36 +L41 +L281 +R22 +R911 +L11 +R822 +R460 +R18 +L70 +L74 +L443 +R922 +R65 +R34 +L34 +L544 +R84 +R80 +L120 +L543 +R49 +L99 +R42 +R751 +L25 +R825 +R48 +L97 +L60 +R28 +R81 +L43 +L818 +L25 +R86 +L21 +L547 +R71 +L3 +R54 +L54 +R8 +R692 +R85 +L85 +R629 +R86 +L79 +R6 +L626 +R3 +R97 +L16 +R84 +R87 +L471 +L96 +L704 +L31 +L33 +R13 +L77 +R28 +R57 +R67 +L974 +R38 +R8 +R17 +L336 +L77 +L75 +R61 +R14 +R34 +R19 +L52 +R27 +L228 +L605 +R73 +R32 +R90 +R10 +R34 +R48 +R18 +L59 +R789 +R70 +R7 +R83 +L7 +R17 +R54 +R42 +R363 +R793 +R48 +L91 +L9 +R49 +L28 +R79 +R43 +R28 +L62 +L80 +R4 +L33 +R59 +L19 +L232 +R192 +R47 +R17 +R36 +L24 +R18 +R6 +L286 +L25 +R11 +L67 +L79 +L1 +L19 +R66 +R26 +R423 +L205 +L92 +R448 +L33 +R41 +R12 +L60 +L43 +L95 +L795 +L36 +L20 +L69 +R72 +L74 +L95 +L79 +R80 +R94 +R95 +L13 +R78 +R19 +R21 +R43 +R17 +L27 +R66 +R50 +R370 +R34 +L53 +L60 +L93 +L47 +L14 +R2 +L88 +L33 +L354 +R48 +R59 +L20 +L96 +L36 +R60 +R72 +L287 +L1 +R94 +L99 +R29 +L36 +L2 +L998 +L39 +L78 +L51 +L39 +L9 +R51 +R51 +R88 +R422 +L120 +R3 +R21 +R84 +R75 +R83 +R468 +R90 +R30 +R593 +R77 +L71 +R71 +L61 +L39 +L491 +R54 +L76 +L383 +L4 +R42 +R58 +L70 +L98 +R12 +L44 +R12 +R88 +R731 +L94 +R912 +L81 +R372 +L40 +R82 +R45 +R62 +R11 +L195 +L31 +R26 +R80 +R20 +L176 +R76 +R96 +L96 +L58 +L12 +L558 +R28 +R91 +L91 +R65 +L34 +L52 +R21 +R64 +R96 +R28 +L88 +R93 +L33 +L53 +R93 +L390 +R44 +L92 +R65 +R39 +R34 +R56 +L62 +L78 +L28 +L32 +R2 +L347 +R58 +L990 +R21 +L78 +L50 +R28 +L80 +L70 +R50 +R4 +L282 +R78 +R41 +L70 +R342 +R18 +R69 +L55 +R55 +L51 +R12 +R839 +R51 +L782 +L69 +R86 +L78 +R921 +L43 +L74 +R88 +L655 +L80 +R231 +L59 +L925 +L39 +R981 +L79 +R76 +R949 +R99 +L63 +L36 +R25 +R93 +R297 +L79 +R22 +L58 +R162 +L73 +L789 +R665 +L93 +R37 +R12 +R88 +R4 +L621 +L92 +R86 +R14 +R31 +R409 +R60 +R43 +L90 +R47 +L56 +R556 +L22 +R64 +L50 +R66 +L58 +R584 +R14 +R2 +R21 +R79 +L134 +L66 +L93 +R23 +L52 +R87 +L49 +L916 +L47 +L766 +R72 +L9 +R57 +L5 +R198 +L69 +R59 +R10 +L79 +R33 +R46 +L58 +R83 +L49 +L98 +L43 +L51 +R76 +R929 +R85 +R26 +L16 +L253 +L31 +R18 +L732 +L86 +L68 +L69 +L58 +L5 +L82 +R31 +L835 +L14 +L19 +R919 +R860 +L660 +L20 +L50 +L30 +L28 +L674 +R47 +L45 +L71 +L37 +R78 +L70 +R92 +R8 +L46 +L35 +L19 +L44 +L46 +L878 +L95 +L37 +L31 +L34 +R78 +R61 +R26 +L57 +L57 +L124 +L10 +R48 +L81 +L1 +L42 +L16 +R61 +R4 +R11 +L936 +L67 +R905 +R62 +L64 +L498 +R85 +L231 +R62 +R87 +L363 +R741 +R11 +L133 +L290 +R396 +R45 +R71 +L25 +R6 +R115 +L15 +R16 +L78 +L50 +L72 +L99 +R60 +R23 +L42 +R43 +R39 +L91 +R552 +L630 +L80 +L921 +R22 +L62 +R36 +R99 +L65 +R32 +R68 +R17 +L560 +L16 +R64 +R56 +L34 +L91 +R529 +R48 +R42 +L43 +L53 +L94 +R96 +L63 +L284 +R86 +R16 +L16 +L57 +R23 +L66 +R40 +L40 +R145 +R59 +L304 +L196 +R21 +R193 +L98 +L820 +L93 +L632 +L75 +R33 +L33 +R74 +R1 +L75 +L872 +R72 +L61 +L94 +L64 +L81 +L96 +L4 +R3 +R97 +R17 +L40 +L877 +R81 +R99 +R14 +R37 +L63 +L86 +L33 +R46 +L95 +L81 +R81 +L50 +R50 +R38 +L68 +L298 +R6 +L812 +L77 +L64 +R75 +L23 +R723 +R36 +R64 +L29 +R988 +L59 +L20 +R103 +L83 +L14 +R74 +R44 +L95 +R689 +R29 +R16 +R57 +R15 +R985 +L22 +R66 +L58 +L16 +R30 +R764 +L59 +L71 +L273 +L59 +L73 +L42 +L674 +R27 +L940 +L24 +L415 +R39 +L319 +L281 +L82 +L53 +R333 +R2 +R1 +R99 +L50 +R886 +R18 +R89 +R57 +L859 +L20 +R79 +R21 +R79 +R8 +L780 +L28 +R572 +L72 +R32 +L870 +R91 +R45 +R965 +R99 +L62 +L417 +L73 +R90 +L697 +R270 +R812 +L94 +R54 +R99 +L44 +L53 +L66 +L81 +R80 +R20 +R94 +L72 +R78 +R35 +R565 +L64 +R98 +L34 +L246 +L10 +L46 +L5 +L486 +R93 +R96 +L14 +L82 +L46 +R78 +L54 +R97 +R41 +L19 +L97 +L832 +L862 +L85 +L8 +R87 +L54 +R992 +R62 +L681 +R85 +R98 +L743 +R10 +R31 +L6 +R87 +R58 +R87 +R92 +L87 +R53 +L134 +R50 +R528 +L53 +L53 +R78 +R716 +R81 +L97 +L593 +L62 +L396 +L70 +R3 +R41 +L23 +R85 +L57 +L13 +L38 +R71 +R28 +L876 +R297 +R73 +L806 +L632 +L32 +L14 +L69 +R83 +R63 +L676 +R13 +L76 +R713 +R13 +R83 +L15 +R531 +L27 +L84 +L17 +L121 +L909 +R9 +R27 +L28 +R960 +R183 +L42 +R50 +R50 +L7 +L87 +L62 +R26 +R30 +L28 +R28 +R81 +R42 +R56 +L28 +L814 +L74 +R37 +L97 +L203 +L70 +R57 +R413 +L658 +R208 +L50 +R72 +L816 +R967 +L38 +R315 +R646 +R27 +L82 +L22 +L33 +R638 +L8 +L24 +L42 +R85 +R16 +L921 +L280 +L59 +R46 +L61 +R227 +L23 +L28 +L2 +L49 +L77 +R8 +L81 +R52 +R29 +L282 +R349 +L28 +R86 +R880 +L87 +R591 +L37 +L738 +R9 +R75 +R37 +R63 +L287 +L13 +L2 +L98 +R64 +L64 +L89 +L60 +L51 +R82 +R18 +L45 +L13 +R17 +R4 +L84 +L86 +L12 +R46 +L27 +L6 +R98 +L73 +R2 +L62 +R10 +L328 +L85 +L45 +L680 +R35 +R825 +R17 +L850 +L34 +L56 +L311 +R43 +R60 +L382 +R11 +L89 +R511 +R60 +R29 +R54 +L54 +L50 +L34 +R25 +L30 +L11 +L57 +L48 +L50 +R12 +R77 +R66 +R311 +R89 +L92 +L8 +R9 +L9 +L857 +R57 +R45 +L90 +R14 +L269 +L47 +R147 +L40 +R40 +R64 +R58 +R1 +L23 +L68 +L24 +R392 +L511 +L89 +L877 +L82 +L44 +R75 +L18 +L72 +R418 +R77 +L68 +R49 +R42 +L84 +L16 +R94 +R6 +L72 +L10 +R82 +R32 +R368 +R73 +L44 +L29 +R220 +R80 +R45 +L45 +L530 +R30 +L62 +R7 +R355 +R84 +L388 +L96 +R45 +L32 +L313 +R40 +R50 +R56 +R27 +L73 +R12 +R18 +L287 +L95 +L48 +L80 +L778 +R5 +L47 +R25 +R33 +R3 +L10 +L39 +L567 +R72 +R58 +L95 +R6 +L86 +L93 +R93 +L31 +R31 +R86 +L86 +L92 +L3 +R77 +R37 +L865 +R46 +L44 +R39 +L95 +R82 +L6 +R24 +L279 +R22 +R26 +R431 +L68 +R68 +L865 +R65 +L393 +R894 +R23 +R76 +R35 +R20 +R43 +R79 +L36 +R60 +L52 +L91 +R42 +R97 +L697 +R550 +R82 +R68 +L98 +R98 +L8 +L59 +L51 +L78 +R10 +L31 +R917 +L508 +L92 +R63 +R19 +R93 +R25 +L20 +R88 +L68 +L2 +R702 +L69 +R69 +R34 +L34 +R8 +L8 +L15 +R53 +R62 +R85 +R815 +L62 +R93 +L76 +L65 +L67 +L123 +L18 +L82 +L22 +L577 +L42 +L57 +R73 +L75 +L25 +R25 +R171 +R29 +R87 +R56 +R57 +L11 +L89 +R55 +R38 +R68 +R965 +L19 +L32 +R466 +L15 +L16 +L69 +R59 +L53 +L90 +R1 +R99 +L16 +R24 +R93 +R62 +L6 +R86 +R15 +R85 +R399 +L60 +R38 +L56 +R620 +R59 +L673 +L613 +R843 +L57 +R20 +L10 +L10 +R663 +L11 +L52 +R156 +R44 +L23 +L42 +L22 +L213 +R7 +L7 +L19 +L632 +R51 +R71 +L71 +R91 +L97 +L94 +L70 +L6 +R76 +R71 +L43 +L34 +L1 +L93 +L91 +R33 +R30 +R28 +L14 +R91 +L319 +L87 +L71 +R86 +R997 +L83 +L289 +L68 +R73 +L16 +R69 +R51 +R17 +R63 +R656 +L5 +L2 +R48 +L81 +R77 +L70 +L423 +L57 +L43 +L35 +R98 +R77 +L86 +R2 +R44 +L56 +R356 +L16 +R363 +R98 +R55 +L17 +R28 +L564 +L4 +L743 +R2 +L2 +L9 +L21 +R897 +R353 +L27 +L83 +L440 +L70 +R155 +R53 +R292 +L56 +R56 +R76 +R224 +R63 +R937 +L13 +R13 +R79 +L79 +L89 +L19 +R48 +L40 +R32 +R37 +R31 +L8 +R875 +L67 +R27 +L9 +R92 +L883 +R224 +R75 +L26 +R74 +R90 +L16 +R874 +R99 +L21 +L840 +L60 +L71 +L15 +R86 +R445 +R55 +R94 +L7 +L50 +R80 +L87 +R70 +L79 +L17 +R996 +R86 +R214 +R29 +R71 +R63 +L63 +L22 +R2 +R50 +R69 +R86 +L585 +L28 +L52 +L418 +R2 +R750 +L645 +L72 +L848 +L428 +L61 +L16 +L84 +R16 +R261 +R530 +L75 +R625 +L3 +R46 +L31 +R39 +L723 +L85 +L56 +R21 +R35 +R83 +R90 +L86 +L33 +L54 +R77 +L865 +R114 +L293 +L39 +R88 +L81 +R59 +R740 +L64 +L30 +L7 +L99 +R695 +R61 +R88 +L99 +L96 +L892 +R10 +R33 +R25 +L25 +L147 +R47 +L76 +R83 +R93 +L36 +L846 +L618 +L59 +L32 +L20 +R11 +R95 +L83 +L110 +L96 +L6 +R189 +R6 +R17 +L12 +L80 +L20 +R49 +L67 +L82 +R167 +R33 +R3 +L3 +L12 +R15 +L26 +L97 +R20 +R74 +L74 +R73 +R27 +L47 +L153 +L502 +L13 +L95 +R10 +R63 +L63 +R92 +R8 +R708 +R89 +R546 +R357 +L474 +R89 +R85 +L18 +R82 +L664 +R712 +L28 +R98 +L5 +R11 +L62 +R674 +R63 +L63 +L263 +R5 +L6 +L55 +L63 +L18 +L20 +L743 +L89 +R52 +L99 +L1 +R65 +R82 +R81 +R72 +R56 +L454 +L627 +R25 +L75 +R80 +R814 +R81 +L263 +R61 +R2 +R31 +L18 +R48 +R36 +R96 +L8 +R115 +L77 +R855 +L578 +L69 +L31 +L14 +R14 +R96 +L196 +R96 +L396 +L11 +L78 +L11 +L74 +R441 +R27 +R6 +L84 +L33 +L83 +L32 +R68 +L851 +R58 +R30 +R94 +L934 +L269 +R737 +R15 +L16 +L122 +L94 +R16 +R34 +R2 +R64 +R81 +R91 +R87 +L105 +R46 +L618 +R62 +R780 +L24 +L61 +L86 +L73 +L80 +L99 +L1 +L81 +R81 +L60 +R60 +L66 +R10 +R56 +L84 +R84 +L605 +R27 +R78 +L333 +R133 +L395 +R95 +L11 +R146 +R91 +R74 +L82 +L18 +R83 +L71 +L845 +R59 +L37 +L28 +L27 +L34 +L76 +R54 +R15 +R63 +R20 +R18 +R87 +L64 +R99 +L16 +L3 +L28 +R502 +L71 +L55 +L57 +R19 +L7 +R32 +L2 +L24 +L6 +R8 +R92 +L11 +L89 +L16 +R692 +R50 +R73 +R11 +R187 +L63 +R63 +R3 +R83 +L83 +R98 +R778 +L2 +L86 +R35 +R57 +L85 +L95 +L2 +L61 +R63 +R94 +R6 +R142 +R24 +R11 +L57 +R60 +L80 +R886 +R151 +R16 +R47 +L975 +R75 +R98 +R82 +L31 +R49 +R2 +L89 +L11 +R62 +R38 +L27 +R21 +R406 +L342 +R53 +R18 +L113 +R23 +R77 +R84 +L64 +R64 +R325 +R84 +R91 +L36 +R76 +L49 +L91 +L74 +R3 +R71 +L25 +L42 +L833 +L197 +L47 +R44 +R88 +L7 +R372 +R19 +L72 +R54 +R50 +R67 +R579 +R50 +L219 +R19 +R65 +L94 +L16 +L63 +R89 +R19 +R432 +R2 +L34 +R90 +L889 +L361 +R635 +L75 +R44 +L251 +L38 +L67 +L24 +L86 +R41 +L4 +L23 +L92 +L35 +R590 +R45 +R61 +L99 +L601 +L438 +L29 +L16 +R34 +R88 +R30 +R492 +L292 +R26 +L88 +R17 +L85 +R67 +L976 +L41 +R479 +L629 +L391 +L21 +L34 +R46 +L511 +R50 +L44 +L617 +R22 +L401 +L50 +R51 +R20 +L536 +L73 +L36 +L675 +L42 +R87 +R255 +L35 +L20 +L445 +R22 +L69 +L175 +R22 +L12 +R86 +R26 +L79 +R314 +R38 +R28 +R899 +L88 +L62 +R50 +L86 +L486 +L79 +R50 +L875 +L59 +L65 +R27 +R53 +R20 +L28 +L72 +L98 +R7 +L30 +R21 +L821 +L79 +R503 +L83 +L10 +R35 +L8 +R366 +L43 +L36 +L24 +L115 +L85 +L30 +R69 +R21 +L60 +L30 +L99 +L21 +R50 +L35 +L65 +L647 +L113 +L120 +L20 +L34 +R84 +R3 +L53 +L743 +L751 +R694 +L342 +L87 +R11 +L82 +R36 +R34 +L75 +L5 +L73 +L17 +L88 +R39 +L49 +L2 +L9 +L891 +L43 +R760 +R83 +L388 +L12 +L1 +L72 +L18 +R34 +L26 +L17 +R16 +R998 +L14 +R48 +R52 +L21 +L56 +L27 +R86 +R45 +R73 +L27 +L56 +R83 +L13 +R13 +L20 +L241 +L439 +L814 +R35 +R79 +R12 +L99 +L94 +R51 +R353 +L753 +R30 +L45 +R45 +L41 +L78 +R19 +R4 +L4 +L6 +R70 +R12 +R425 +R85 +R67 +L51 +L757 +R55 +R95 +R38 +R67 +R65 +L99 +L111 +L49 +L6 +L52 +L3 +R35 +R26 +R97 +L3 +L143 +R43 +L44 +R44 +R37 +R35 +L72 +L59 +L860 +R19 +R38 +R62 +R97 +L53 +L544 +L57 +R57 +L89 +L97 +R786 +L82 +L99 +L23 +R569 +L76 +L55 +R97 +R17 +L48 +L316 +R8 +L60 +R60 +R15 +R93 +L53 +L23 +R36 +L60 +R94 +L369 +R383 +R92 +L132 +R80 +L762 +R57 +R34 +L77 +R74 +L21 +L14 +L10 +R71 +L36 +L8 +L77 +L979 +R21 +R979 +R280 +L91 +R11 +R79 +R21 +R54 +L67 +L21 +R66 +L32 +R24 +L313 +R136 +L52 +R777 +L72 +L80 +L40 +R44 +L813 +R6 +L56 +L50 +R55 +L66 +R710 +L430 +L5 +L66 +R262 +L682 +R87 +R643 +R19 +R80 +R467 +R15 +R773 +L55 +L18 +R58 +L427 +L61 +L229 +R59 +L18 +L20 +R20 +R14 +R4 +L97 +R34 +L268 +L69 +L45 +R88 +R392 +L35 +L41 +L59 +R526 +R1 +L11 +L515 +R29 +R75 +R94 +L99 +L69 +L33 +R2 +L63 +R1 +L38 +R28 +R53 +L72 +R8 +R54 +L51 +R71 +L61 +R84 +R86 +L37 +L29 +L54 +R620 +L5 +R5 +R69 +R831 +L36 +L31 +L33 +R1 +R29 +R70 +L15 +R78 +R79 +R58 +L555 +L59 +L46 +L40 +R47 +R53 +R66 +R34 +R89 +L769 +R19 +R8 +L47 +L5 +L495 +L49 +R46 +R3 +R58 +R42 +R89 +L60 +R65 +L250 +L44 +L26 +L43 +R69 +R49 +R23 +L72 +L11 +L89 +R882 +R3 +L35 +L612 +L38 +L876 +R17 +L420 +R73 +L98 +L51 +L82 +R40 +R39 +R53 +R5 +L58 +L642 +L1 +L299 +L814 +L86 +R59 +L71 +L489 +L99 +R55 +L55 +R91 +L63 +L14 +L71 +R70 +L190 +L23 +L28 +L72 +R33 +L69 +L64 +R3 +R35 +R19 +L540 +L51 +L18 +R52 +R6 +L247 +R73 +R733 +R80 +L45 +L329 +R48 +L97 +L22 +R59 +R41 +R1 +L14 +R44 +R56 +L87 +R965 +R51 +L6 +R5 +R79 +L93 +R51 +R50 +L2 +R628 +L88 +R60 +R34 +L915 +L19 +R55 +R745 +R67 +L75 +L92 +L98 +R871 +L75 +R3 +L19 +R18 +R62 +L92 +L32 +R85 +L23 +L92 +L26 +R18 +L40 +R40 +L86 +R86 +L59 +R32 +L93 +L32 +R78 +L45 +L70 +R89 +R908 +L45 +R68 +L26 +R63 +R32 +R58 +R86 +L46 +R2 +L19 +R19 +R847 +R59 +L5 +R90 +R72 +L63 +L19 +R19 +L859 +L16 +L25 +R59 +L59 +R39 +L39 +R431 +L58 +R27 +L49 +L29 +R78 +L42 +L91 +L67 +R86 +L786 +L50 +R570 +L42 +R5 +R984 +L76 +L60 +L25 +R56 +R98 +R55 +R85 +R677 +R93 +L70 +R83 +R317 +L471 +R55 +R16 +L448 +L155 +R64 +R339 +L41 +R173 +L20 +L72 +L20 +L520 +L24 +L76 +R89 +R35 +R13 +L759 +R624 +R98 +R37 +R563 +R99 +L99 +L703 +L57 +L32 +R61 +R31 +L630 +L70 +R60 +L91 +R250 +R6 +L25 +R30 +L69 +R38 +L42 +R43 +L9 +R9 +L927 +R40 +L76 +R253 +L619 +L271 +L425 +R21 +R99 +R76 +L71 +R284 +R93 +R311 +R790 +L32 +L46 +R90 +L52 +R62 +L45 +L76 +R21 +L91 +L30 +R221 +L787 +R81 +R59 +L53 +L39 +R12 +L573 +L27 +L873 +R87 +L587 +R8 +L240 +R431 +R617 +R92 +L8 +R7 +R93 +R57 +R58 +L41 +R16 +L78 +R80 +L92 +R36 +L536 +L80 +L70 +L27 +L74 +L82 +L18 +R51 +L576 +R7 +L14 +R83 +R522 +R878 +L55 +L60 +R15 +L79 +R75 +R4 +L44 +L1 +L13 +L8 +L94 +L13 +L727 +R40 +R10 +R91 +R59 +R19 +L63 +L56 +L93 +R93 +L99 +R56 +R31 +L51 +L37 +L30 +R290 +R40 +R94 +R254 +L48 +L15 +L95 +R86 +L41 +R35 +R45 +R19 +R66 +R532 +L738 +L50 +L18 +R89 +L15 +L22 +R79 +R90 +L18 +R953 +L49 +R83 +R84 +R357 +L540 +R37 +R246 +L70 +R48 +L78 +L11 +L77 +R59 +L71 +R30 +L77 +R47 +R61 +R36 +R68 +R35 +L64 +R64 +L76 +L79 +R55 +L95 +L76 +R671 +L21 +L28 +R1 +L452 +R47 +R85 +L731 +R99 +R88 +L569 +R50 +R40 +L9 +L31 +R17 +R57 +R651 +L27 +R33 +R40 +L51 +R43 +R12 +R56 +R93 +L789 +L79 +L12 +L13 +L263 +L937 +R653 +R39 +L43 +L49 +R23 +L23 +L42 +R789 +R2 +R251 +R70 +R99 +L658 +R89 +R691 +L427 +R36 +L57 +L50 +R75 +R332 +R33 +L1 +R168 +L929 +R29 +R53 +L2 +L51 +L52 +R52 +R89 +L24 +L65 +R65 +R35 +R822 +L87 +L75 +L32 +L668 +L408 +R114 +L366 +L27 +R15 +L46 +L42 +R14 +L52 +R90 +L52 +L83 +R16 +L906 +L25 +L97 +L205 +L27 +L121 +L52 +L99 +L1 +R310 +R90 +L61 +L39 +R4 +R81 +R15 +R187 +R13 +L84 +R66 +R51 +R67 +L656 +R35 +L48 +R89 +L606 +R786 +R73 +L14 +R41 +L18 +R818 +L73 +R73 +R14 +R18 +R27 +L81 +R49 +R1 +L93 +L33 +L8 +L694 +L31 +L83 +R414 +R60 +R40 +R88 +R46 +L34 +L451 +L5 +L86 +R90 +R52 +L61 +R47 +L86 +R5 +L953 +R418 +L70 +R696 +R1 +R69 +R296 +R38 +L69 +R69 +R89 +L989 +R173 +R42 +R585 +L638 +L54 +L29 +L569 +L10 +R14 +R47 +R95 +R99 +L62 +R807 +R27 +L24 +L94 +R63 +L72 +L74 +R74 +R458 +R89 +R953 +R25 +R89 +L77 +L47 +R36 +L133 +L93 +R21 +L21 +L397 +L3 +R25 +L340 +R94 +R7 +R45 +L31 +R85 +R88 +R94 +R933 +L59 +L292 +L449 +R28 +L28 +L163 +R645 +R18 +R11 +R89 +L4 +R760 +R79 +L35 +R55 +L55 +L10 +R5 +R809 +L4 +L51 +R18 +R28 +R29 +L24 +L53 +R176 +R25 +L48 +R41 +L62 +L74 +R357 +L84 +R3 +R29 +L10 +L71 +L65 +L26 +L37 +R56 +R74 +R16 +L47 +L4 +L226 +L60 +L3 +R27 +R66 +L81 +R781 +L61 +R567 +L673 +R367 +R22 +R78 +L955 +L207 +L85 +R768 +L5 +L37 +L79 +L60 +R960 +L93 +L1 +R47 +R47 +R43 +L43 +L62 +R192 +L85 +R55 +R36 +R433 +R731 +L576 +L824 +L860 +R162 +L30 +R46 +R28 +L46 +R724 +R48 +R18 +L790 +L85 +L15 +R50 +R50 +R97 +L10 +L87 +R93 +L46 +R53 +R82 +R39 +R79 +R96 +L96 +L30 +R84 +L54 +L2 +L16 +R60 +L42 +R88 +L888 +R63 +R919 +L82 +L34 +L64 +L2 +R4 +L504 +R66 +L66 +R73 +L4 +R72 +R59 +L74 +L26 +L87 +L210 +L49 +R66 +L22 +L98 +L45 +R64 +L19 +L64 +L36 +R94 +L874 +R880 +R9 +L44 +L291 +R26 +R53 +R47 +R86 +R38 +R97 +L484 +L145 +L48 +R31 +R66 +L41 +L44 +L44 +R55 +R10 +L77 +R594 +L94 +L32 +R24 +R81 +R192 +R87 +L952 +R73 +R73 +L83 +R37 +L83 +R83 +R818 +R82 +L62 +R62 +L99 +R42 +R46 +R2 +L91 +L18 +R77 +R41 +R27 +L27 +R25 +L25 +L84 +R80 +L96 +L117 +R17 +L329 +L71 +L689 +R89 +R66 +R352 +R74 +L60 +R15 +R53 +R33 +L33 +L3 +L95 +R98 +R53 +R91 +R1 +L70 +R91 +L66 +L30 +L10 +R79 +L3 +L27 +L35 +R26 +R94 +L94 +L88 +L29 +R83 +L66 +R50 +L50 +R26 +R75 +L1 +L84 +L28 +R84 +L56 +L16 +R55 +R22 +R23 +R95 +R15 +R90 +L64 +R64 +L90 +L93 +R87 +L4 +R3 +L63 +R69 +L9 +L37 +L2 +R10 +R22 +R39 +R49 +R33 +L13 +R36 +R44 +R13 +L42 +R2 +L23 +R36 +R13 +R35 +L32 +R48 +R3 +R28 +R20 +R2 +L12 +R44 +L35 +L34 +L25 +L36 +L5 +R42 +R4 +R3 +R24 +L2 +R38 +L9 +R43 +L13 +L32 +R15 +R8 +L27 +R7 +R40 +R13 +L22 +L22 +L34 +R36 diff --git a/day1.c b/day1.c new file mode 100644 index 0000000..d33e384 --- /dev/null +++ b/day1.c @@ -0,0 +1,60 @@ +#define DJSTD_BASIC_ENTRY +#include "./djstdlib/core.c" + +int djstd_entry(Arena *arena, StringList args) { + string input = os_readEntireFile(arena, s("./day1-input")); + + int64 dial = 50; + int64 lineNo = 0; + StringList split = strSplit(arena, s("\n"), input); + + int32 password = 0; + + for (EachEl(split, string, line)) { + if (!strEql(*line, s(""))) { + bool lineValid = false; + if (line->length > 1) { + char dir = line->str[0]; + Int32Result numStrParsed = parsePositiveInt32(strChopStart(*line, 1)); + if (numStrParsed.valid) { + lineValid = true; + + int32 dialPrev = dial; + int32 pwPrev = password; + + int32 turns = (+numStrParsed.result)/100; + password += turns; + + int32 remainder = numStrParsed.result - (numStrParsed.result/100)*100; + + if (dir == 'L') { + dial -= remainder; + } else if (dir == 'R') { + dial += remainder; + } + + if (dialPrev != 0 && (dial >= 100 || dial <= 0)) { + password += 1; + } + + println("turn: %S, %d => %d, %d", *line, dialPrev, dial, password - pwPrev); + + dial %= 100; + if (dial < 0) { + dial += 100; + } + } + } + if (!lineValid) { + println("Input corrupted at line %d", lineNo); + return 1; + } + } + lineNo++; + } + + println("%d", password); + + return 0; +} + diff --git a/day2-input b/day2-input new file mode 100644 index 0000000..4de7d32 --- /dev/null +++ b/day2-input @@ -0,0 +1 @@ +1-14,46452718-46482242,16-35,92506028-92574540,1515128146-1515174322,56453-79759,74-94,798-971,49-66,601-752,3428-4981,511505-565011,421819-510058,877942-901121,39978-50500,9494916094-9494978970,7432846301-7432888696,204-252,908772-990423,21425-25165,1030-1285,7685-9644,419-568,474396757-474518094,5252506279-5252546898,4399342-4505058,311262290-311393585,1895-2772,110695-150992,567521-773338,277531-375437,284-364,217936-270837,3365257-3426031,29828-36350 diff --git a/day2.c b/day2.c new file mode 100644 index 0000000..37ebf38 --- /dev/null +++ b/day2.c @@ -0,0 +1,54 @@ +#define DJSTD_BASIC_ENTRY +#include "./djstdlib/core.c" + +int djstd_entry(Arena *arena, StringList args) { + string input = os_readEntireFile(arena, s("./day2-input")); + + StringList ranges = strSplit(arena, s(","), input); + + int64 result = 0; + + for (EachEl(ranges, string, range)) { + if (range->length) { + StringList startStop = strSplit(arena, s("-"), *range); + if (startStop.length == 2) { + Int64Result start = parsePositiveInt64(startStop.data[0]); + Int64Result stop = parsePositiveInt64(startStop.data[1]); + if (start.valid && stop.valid) { + for (int64 i = start.result; i <= stop.result; i++) { + Scratch scratch = scratchStart(0, 0); + string asStr = strPrintf(scratch.arena, "%zu", i); + for (int j = 1; j <= asStr.length/2; j++) { + if (asStr.length/j*j == asStr.length) { + StringList list = PushList(scratch.arena, StringList, asStr.length/j); + for (int k = 0; k < asStr.length/j; k++) { + ListAppend(list, strSlice(asStr, j * k, j*k + j)); + } + string firstChunk = list.data[0]; + bool matched = true; + for (EachEl(list, string, chunk)) { + if (!strEql(firstChunk, *chunk)) { + matched = false; + break; + } + } + if (matched) { + printStrList(list); + result += i; + i++; + break; + } + } + } + scratchEnd(scratch); + } + } + } + } + } + + println("%zu", result); + + return 0; +} + diff --git a/day3-input b/day3-input new file mode 100644 index 0000000..0970814 --- /dev/null +++ b/day3-input @@ -0,0 +1,200 @@ +3223323232423342133321323321133325222233342332323323343713331321434231231232333333232334233323322122 +3422323123349134332433333333432333313333323413433133433343234433433334323333452433843344143323335344 +3323113221321312236523622222221222225424323212132242333365351332221432232235143422248222121121832228 +3463333333523444333334433344544335323235227453444243335438244443585333243345323433342343323423544343 +4233366944836552382823534346549355354476555367335594833663342368343653554644862935563623533154857355 +1332332433331354333343732343231333333333333244331233163343322313323333333342353333433313332343313344 +2323333333132333133423233333532331333334313243333333432343123323232442532313323213333333223533324332 +5312224222713236213232382221222222216232352633323322223233232333323422323225662322323723232222222232 +2243331332223333322421433342323323331333332213223332233332153332433342223233221232112323323334332332 +3156557564452635362717784672442615553635257743349535442676644432474552623544224472653952463455546442 +1312431342342824244214465334554334223332235314353232153332244574432234522234334345234413323433435332 +3554245243536264333644415362575554525424533152554425565554435225545754365521344355555155556554244433 +3353433343933436853333343334433544533333353523333323331553333462333433233452343223323433553333333534 +7336455237364265332533353534645233452333753233274646144545334553331347633135465814457336666374354374 +2433722533332321213232333323222232322233342222371243322432283314643332334143336933224322221331822363 +2247224633427672333417546743363394719333635395533333441323733426343643343694333454335345367755643335 +2243232372672232322322321215224746323615328472712261262632721421227121452562656223322437218572422221 +1222929212582422112521233212223222234234242267327154222384122121223122512222523922212956222222252226 +3122322435422357222233333223232234352422221333433322342832323122234243231745124324563425262224222212 +1321332222443232432355222422425222244535264454241322322422345333244431431322113412444229424432364133 +1212211124122213456255217441532222222725521322332233213222221332222222331222522232142283122212112121 +1221222142222133332341312333325237232223222244224227223222113232232634322322222232323273223434131332 +5438843322344249174483324441333413342444444434313423752414444443442232434241744241444444333413444444 +2231336232333236334112243332332341353232312512325222263432225332633322235632375232223315283333433363 +1233232232244732342232235233433333134123235541423222432442243435221242423434242223322334433434343534 +2312422514215411132514322222222222222223235322134223312222221142221213222214314222122211213144122472 +2352312236346345122352672524653136221643242523462324342566643556212133253226462645113375562465463463 +2252285215225322621451522125151253218241242222322242421513142213122213274723222222122122212212242622 +4764556435435474434364374545434435645236634745385365324363447564667544243444254647645664366435256446 +2824332112222121122241422243122211121322131212222342523222233232222222122132221321211233223212242222 +1222322226122232414323112322352321231332324222222212212232243242322235213322222222322223222323222125 +2252722221562224322233133222324333222431232222232332122212212283223222235313323222321222263422212225 +3225322333142232533532322223341246336436425354236552512341262222442442432424316254235423242422424431 +1229234225411352533231233325262212262424612324412432524244236611122332236543432356222256232952224223 +4422322225363423225135213321451642433226538122141642663126542212332323422221342331242252432422222321 +4662664565466353654667543463541541665663656552266564563364254245666465446455433446366683366354765935 +8112122265252322231255272221125322122133222332245342272259236322132232234219412242132223323213224323 +4324545423224241227583333327531422243651534442323374373723223267428526133225253163132824362447344627 +1873223364414122262223231362223512323215135752522222734422222232212231222721127222262123742126233273 +2222222232222221212222211332112222311222111122232212223231322221122222222113422312422211221222221122 +6515552226443442213243133322422152331233434354121421266462313324312444525221525635242234252313112554 +2222223313344213211222422221252212321227222252322221425222221421222322222323332221423322222223243212 +3322352323333353343333333144233223226632532233333132133232322373233333433231243323133323363262322133 +1334333384313212233263453263443134334542743232641425424243735343422256314524379414634432354365527544 +2222122222122222232235222222222222323222211222222222221222222222222222223222223222238223222132112222 +4552545432554471442435255334542432343233452454373464454247443423525434455545443443545522253444253434 +2295142423439123226532549221326257642473736734226243554156257523327813952236236373774524212322953292 +6244442442833334532829613842222423522322338315233322255442882222783429222223272245232322442432445282 +2223281222122322425123122325432223222221231423221422223222352213222122222324122222254223212125222222 +4424433234542223532234133312344242223261233264433212442333234342234445123232234125135124322342223215 +3321444232221444232243522321232343434246434634325422431432452732234232342217314324414312252342131422 +4222445346344244345463442445444423442454352143434333444443353434236443445442344345444343422434444423 +7445335355442547323942325424544342334544545134465255335334523554434234624285444374443344455232725354 +6662469465375473453283843715347366454456464744242897948347645557473738466479664648345568563543338562 +3413332432331224232321343113423313124414141122312422131143212412143243221443322142222431112231356789 +4214514253524332351123524241342444644324422532442535662142332142423422322324342455541551561232442442 +1252555353483543522442375222325465493151255532427344524824242548554533654314332823448245125448973335 +3343353332423434432357344244332322345473752733743623253234344323353733563438364635433334363233353522 +4481475443864865466663533753723433263738268884757523682775288884487347484537562245448287533854845335 +2283214222572422472292362124185482222421528232637272162222421216223326222232322222122323112662222251 +3322123122222252214216221233333231532222212222523332422324122223222332113225227423275142352322812232 +2122255524233332323141342322365426641312343232525215312133422433431435222512532421153342412622412265 +4322333321433452432114212422222241244242232121244322242338222432342132722243242283444223443412426222 +2686481452258352754854574561574766144245484684536194922243385338627468565255352555437323339672423363 +1512123243234132232133124432222472421461652222346228249225222542231432532112315523336523213754323431 +2333221223222122392221223212213232222423132223334312122234323222211313242534322221224222222322233331 +2423143222321313224212232212221421231245322412232422113222245343432231342344413332121234212122432322 +5442623431233335321453824421252232355952141522433545543539332335311722233143332383725343442562123323 +4221221222122221241232222321323222252323226212221222222222221222222122421128222632321222132322122422 +2425957221421122363222228632835265272254223922243713292442232584413234282222222228223946421632156433 +2334313352234233444434474442432342455339475628455436233334243333444454472923441724248233274444144933 +1522122621421834525224232222117228283782114644247574537427343251232114632224436232222312132122332444 +2222323813234423333232323344324323313233224123343232323233542523322414233332223733231443245334326222 +2212311222211222222262232222233231324123222121122232212222322232332222232232221221221222222282121222 +6446555567535466665998357435643445437644844342775443548435536556654763995236662635659544948533464655 +5555555645569655663523984432435935347685533255235633344358886535634465343443534535566633715553544874 +2223642272622224221226212325212321232213222622321222325227222423127222232231622222242522321612232231 +2496484462443135438653377563534444657376332434415777934547754544584252525522367928355656352624353245 +2212122212231222211322212232212222263222222223222221222222222224123131222123242223282212273222121242 +4554475645355358566552555545455545864555435533456467357552458357789556143315353426543345644476644555 +5134335453346453622442534252724124434414324146262511242446444264242232752516413335453447442422256322 +8553685876753576369998575836755786969767886966796423549848793898689987896697887879864874974433698684 +3222221212433223229321122342423213211223141222324922213223412223522935613123272223824242726231274133 +2323214223322522212142232432421443422332332221222222424212432233113322625224233543322232222333442332 +1221332242334224512242343232434244233322411431122212133442112222122433423124423224285123324324422432 +3366435344323232643422212253242435322453143543135334442252422132533353345222473345344251424223333344 +5577695784874427654465756434554854566476757655434446776634753864496554464687473687744697477557496744 +2223331223122231238412212831223232322322212222122221222122222222221222252112422232122214223223122223 +2227576456152577554153253435177341723712527161376724362342426213664663134124547466564665756352111689 +5335337643654473353237332235453355166334545466422334734736326554332364443221164555535734523223763333 +1344466459323423455113777375337223859383757333338384523593433243747981433467243637342557221538535533 +7582359387865258737443328653655389875433894548344445667743258486498794928645678369824848385534734776 +2332322322342342412234222222123242322323433221333223322422225132333224332123221343213233322333223335 +1222212339322122758223313222222412234122252233631244134342224222122222223327233224222433319335255325 +6333333432353233327325334333323333274233333373223333337313333233353533323323353333332333333433223233 +2222231213132221223322123412222323242231322222422221123124312224211232331236231113222223242212222222 +6211221233212246222221221723221232332221222252212222122242232221211221222229233224323232222323634222 +4352121222222321222222929223222422223722623222225222222412282122222222222242422212222693244181222222 +8913337637249265653436452735736242455355355265685536925394769886566866374777555685751454834945789964 +6752637474433657857283376566544626855476477675654588677482837533623665555466364457344273957332432598 +4222413233422323343452222422233472623325342313333233232332524234234232143323733334434344324325327224 +8143572574121427425454114554163292434837485274446547432448523464544552394756325354741544552749493125 +2324242332224222222222222222322342426222122244332322222212222222223221222212232222222231222432223522 +2425251321241127455322154425742233534241444318282344443465142233458442232313443422323121526223256242 +5233541533952725232533434244442434334242514243352523321432353334334324654448344357263457437323422233 +1222222132122222224422244224221235421422122212343322242321222233222222222242212423224222222221232212 +4373334332463466333442362333753332443524543247336343243645323237488441333343346333295132124373733633 +2523534431224324414345482234444221454423424224333422322243448324312322434234442114435244442243441234 +5216772222555212556333333872237834577173233119353423313212327282523773262236416443872322221322534422 +4424454444342444524324435443234344844393334425484234434665336524452442786454756352213845227724656132 +3363354538235285633244636333445633466653126532211425338682456273436424254761431546225362531484356752 +3244434526534332442451233526275445263746427475576222343244732416444254472234325468473423233327523324 +2422544121232544222161323122663663125363226431332142232152243452376322341323334243243446643226633222 +2556357124477356153352651364546654358344426375261446425545358346436237863435535732553326661872325464 +5313342221214324343222333354423244423232415434421125243142423242452344323234424343233213432336333321 +2222222415222333212233322232232823223323532222223322234341323213222225132513233233144422241322323143 +2435536564346557977472363654558672655363255424452352727654342526452266662643477554244247634427452527 +2412313223331213327313121133331232322213221333333232231232222223452122132323126333523223212333232111 +3231332352212234212242355842132211432322343525228242534152254224252644227822521152241233542151273151 +1242242354442274547635266524274258756466558575646635642155345536824686545243645535452346434554656564 +6355664686264756488437865667634746736655788584654552586677568753312538543555254569657737547457458648 +3433333423124316324444328434113632222233763435842543934312343143673636821751634121614222233313442742 +2222422122222142252221232135222222325222244213424123245231122141312212221322221222121425222122122231 +4421273146345347671635465533646555455635434456635447367357366473634464635723765465847646573444674556 +8632543245483535984557352533562435234658334546456423545573444857755938555768254565451952547643543775 +3333333332333433543233332432433323323633133233233513335333433323432533333213334323333334434323233333 +3233333213323323313321331112423352233223333363332323322223225313335653333435322353221323233333233226 +3542224325544323334223433232434114234432125224324433142342313214416885443227423223233335124443443243 +5332424223422323232331421332142224234133323132312632224342362235122233232523311431244322126332325322 +3222323323312231332344313274322343223361261283233235222241251333332233123623322112244313232131231326 +3553546227454236346375443545175372962433445723533766777317531733331642245574676774264732264697226946 +2435643136269525431345566244444444225443349535623455444342423624564425263416364322344336355223562544 +5465346325726225434122422274252322744424443525523241734151312624357524433134543352446424544444254232 +1222232123121325324231422232221222322322222222222422433322222222224944125182233332122322122422222232 +2323423225235522223424422232612132311521844152232226655722121542532222142512472334432244213422312526 +5433221213531231256242366438214111642244562263723315543556223353574322732164154234244571947254521372 +4423444256245575277454484449462255466372224484443365354543562747423333494445434422443478532288535643 +7212212423321242211212221221222221222622921222662422614216245222324222251137525442122222222422532232 +3866324425639525332338773332267343827345232373334433521425625823323364613333729547256235334362325342 +3956721534132232125232223354253319653232234334419473243332814423252224323234341322431441435278353522 +6217536363656322526322115145666764366246463924636664266333265321456389562886565673152312236666533235 +2222245723222542322215462532312222252224331222122222216244622139221232245226732222225252322222232411 +2322543139452322455421152531422225323453243313452454242242151713542324264543313333713931223423342228 +3221312232421323282233234237522182224452253425262523326521312325322322162331221425332373123155232222 +2746432442536455442925944435593977235762735556344345555295341845842826452232744332536933645365525654 +2441574333821246122228322222312142252223248422252122432445221245132292339822481342645252222434225143 +2232222318242253123348232333344332226324544434534253222244322443222272822112142124233447132324441413 +2241442454535543312521314131131112335315542251251413111433321452321523234322331555423531515213426789 +2421866322223443213424411342422221235322434155242342122323443332862323334333223133323221232323212264 +4722432322464532321414334423442423222342212342124343424224224244443434442442312432312121412343262442 +7232221322321522232326122212222342222322222212312222323242222222122222353332122223122112131233222222 +2643222121222222322322422222222123223122243232324222142233112211223151322222212212232223422224342313 +3442333385524542324324223132392421244233363233622433141237435232425524131382333933335432333133587443 +4331133222243432515443224333732243383832244133237352433333264644322723221373325733371283342362332353 +2332332334232123233313332132122463332332122233223332332233512283342443333133633323321123362232323312 +2322323212232342232222232121232222131222122232233233122223221323233342222422222422212342221323231233 +4398433487689256957736447448958955647985575694458686573584458446529576886544765828746538614956782733 +5342265323223554344222423442443442244621452444334535623444364234751623434213245225222261231422234426 +3333222325132222521222231353123353122343112333353522222252252222131422235532213223231231323222525515 +1628322332616133411672142534245323296324442522322323333123232614218315222212122272229542333532312335 +4486646549621254343552376335367338931262676565364546652367262516243571456385522267463567256716552425 +3132342252574332243325555411453232224222542352542443223554226142523546322425433154312255325532432424 +3464267693574476953135666243136766777645656548444662243226644544487953443548557477854339565338341666 +4314322222132224222221232222222223222222221222122225422211222223523222231321322212252322222522213222 +8745345432452732543532735233374423435438343323453534332478358443637444436533235335315734845423235822 +2373227776462391365224136636227272715323636285134733342825834238571243345753251263333742335753333763 +6236531553554154255644321211121223122244435453611521363315445223336111124466261146114553363516454789 +2141132231122222128231324232242223212124232222531422221312221242422234223122222212222542422344222321 +5695222952453322424522524329243556774533752455554522244442365425913434264444322544692448456424433324 +2222412222322542232222321332222211332122221454432312321322242223222212422242242111232231324232212223 +1222262425251422221421121212622235222422222241533212232612522422162224642322213161325525522311233221 +2357329192452425321496232348725343236257672366346176324732582263123357855556254537754544333427777296 +4122365247223133236225133223821321627528418255422292622234621243613323235262236695346315222412823215 +8232327686335213853635467688643854864565678246571456562298523736225424931483345863684647465533884763 +5433644333734433692878966464333565342355277374345773865533443553344433483941615253737584393333253359 +2623182117312236223223229122232923282623243321226112232224293123133222127211521213222222127322222224 +4515355464345435252553259327524365344535354453245547753457653474554755537357543549834754544354454257 +4343242444454244355441446534224434653463254664462422444444454634424542754642545446454456443345236244 +6252564353123123234553322165573813992576675563459842432346475523255223746632435673632324542622232743 +3683762484734182117162245181271658436561472683238836883216376187475754326856275132257561553873514879 +8322422233253425332533442132461642333455462342214353436112244432434223443313413233444116359358325357 +2122231223214232212133332132222233931212222232322222122223221322223221227222122222223222222252212122 +2133522334323313232222243543222432433463536553452323324245443343254241133533234353342343255461321231 +4122333122212322225322231334325214312232223232222412212214232124422231324324242122124222322242232333 +2217222478253322421552352224222221422282251262322324321327622222623326421343522112272721225413222522 +4324333333323335332243333323654533332333343333342233442234332433134323213236333443231334333342313423 +4455855445424555743549549446445444185464658743359464455555473834547337497954564438854556355578864554 +4635155355543423242435552564645777735354562584442545334445744343552455484475445234235895615335665432 +3522213332223422221352222333332315223232321223112223132232223223343313337221335322113113312322321322 +2462451864722242312529223247244228744625352215342742231553326545451872824234526145272226523759472552 +3241433223333432443242352432251433253342224423323342235233224434235223342321431436384243233223323633 +2144222234232524322112262213224424242243432232442213442112222211362412221421223222233421212343242432 +5546565255544585455857545954555633553553535926559748584756454463543565551595454257455555595555855744 +4632332242242234293772618826288172757372366734632738945845236752479947259285477278212467375386832853 +2343553276363356535522332242643945654352263332355665563332352434334538634333234323524532646666532373 +6642233412433362523333233544252325392143222451732233234252432221136443244543244155633432322432142312 +6645513635553536456434465554555532563634624843245574253462583453246844857313433341876266423526473852 +1113233522332432321212222313412315521343627282223261232234221222322442422324222532621323222434113195 +2221255122222112321232232225222222242222221523222213222222221121122123224312322231221223212222222224 +1112121122222223222222222222112242222232323212322222213112322622222132213212123253423222223242122232 diff --git a/day3.c b/day3.c new file mode 100644 index 0000000..30aa2e6 --- /dev/null +++ b/day3.c @@ -0,0 +1,38 @@ +#define DJSTD_BASIC_ENTRY +#include "./djstdlib/core.c" + +int djstd_entry(Arena *arena, StringList args) { + string input = os_readEntireFile(arena, s("./day3-input")); + + StringList split = strSplit(arena, s("\n"), input); + + int32 maxJoltage = 0; + + for (EachEl(split, string, line)) { + if (strEql(*line, s(""))) { + break; + } + int32 firstDigit = 0; + int32 secondDigit = 0; + int32 secondDigStart = 0; + for (int32 i = 0; i < line->length - 1; i++) { + int32 currDigit = line->str[i] - '0'; + if (firstDigit < currDigit) { + firstDigit = currDigit; + secondDigStart = i + 1; + } + } + for (int i = secondDigStart; i < line->length; i++) { + int32 currDigit = line->str[i] - '0'; + if (secondDigit < currDigit) { + secondDigit = currDigit; + } + } + maxJoltage += firstDigit * 10 + secondDigit; + } + + println("%d", maxJoltage); + + return 0; +} + diff --git a/djstdlib b/djstdlib new file mode 160000 index 0000000..3f3ef53 --- /dev/null +++ b/djstdlib @@ -0,0 +1 @@ +Subproject commit 3f3ef5351fa083095984642bc408850deb23f7f1 diff --git a/target/app b/target/app new file mode 100755 index 0000000..d463035 Binary files /dev/null and b/target/app differ