From 2c7db5c4a07fafcb3da089fcafe15575813c208a Mon Sep 17 00:00:00 2001 From: Franchioping Date: Thu, 4 Dec 2025 20:40:13 +0000 Subject: [PATCH] Initial commit. Day 1 solved --- .gitignore | 2 + Makefile | 22 + flake.lock | 25 + flake.nix | 26 + inputs/day1.txt | 4046 +++++++++++++++++++++++++++++++++++++++++++++++ src/day1.c | 62 + 6 files changed, 4183 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 inputs/day1.txt create mode 100644 src/day1.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a4fb4fb --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +build/ +.cache/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..6de6da7 --- /dev/null +++ b/Makefile @@ -0,0 +1,22 @@ +# Advent of Code C Makefile + +CC = gcc +CFLAGS = -Wall -Wextra -std=c99 -g + +SRCS = $(wildcard src/day*.c) +TARGETS = $(SRCS:src/%.c=build/%) + +.PHONY: all +all: $(TARGETS) + @echo "Compilation complete. Executables: $(TARGETS)" + +build/%: src/%.c + $(CC) $(CFLAGS) $< -o $@ + + +.PHONY: clean +clean: + rm -f $(TARGETS) + @echo "Cleaned up all Advent of Code executables." + +.PHONY: all clean diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..893a783 --- /dev/null +++ b/flake.lock @@ -0,0 +1,25 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1763948260, + "narHash": "sha256-dY9qLD0H0zOUgU3vWacPY6Qc421BeQAfm8kBuBtPVE0=", + "rev": "1c8ba8d3f7634acac4a2094eef7c32ad9106532c", + "revCount": 813095, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2505.813095%2Brev-1c8ba8d3f7634acac4a2094eef7c32ad9106532c/019ab6d8-0005-7317-844d-5d868444249f/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/NixOS/nixpkgs/0" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..dce9520 --- /dev/null +++ b/flake.nix @@ -0,0 +1,26 @@ +{ + description = "A Nix-flake-based C/C++ development environment"; + + inputs.nixpkgs.url = + "https://flakehub.com/f/NixOS/nixpkgs/0"; # stable Nixpkgs + + outputs = { self, ... }@inputs: + + let + supportedSystems = + [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; + forEachSupportedSystem = f: + inputs.nixpkgs.lib.genAttrs supportedSystems + (system: f { pkgs = import inputs.nixpkgs { inherit system; }; }); + in { + devShells = forEachSupportedSystem ({ pkgs }: { + default = pkgs.mkShell.override { + # stdenv = pkgs.clangStdenv; + } { + packages = with pkgs; + [ clang-tools clang cmake ] + ++ (if system == "aarch64-darwin" then [ ] else [ gdb ]); + }; + }); + }; +} diff --git a/inputs/day1.txt b/inputs/day1.txt new file mode 100644 index 0000000..81eaec9 --- /dev/null +++ b/inputs/day1.txt @@ -0,0 +1,4046 @@ +R34 +R23 +L15 +L36 +R50 +R24 +R19 +R21 +R16 +L27 +R12 +R39 +R20 +L15 +L39 +L22 +R10 +R39 +R13 +R19 +L24 +L23 +L17 +L4 +R31 +R35 +R50 +L9 +L24 +R12 +L20 +R4 +R29 +L47 +L10 +R40 +R26 +L47 +R24 +L24 +L13 +L38 +L2 +L18 +L30 +R11 +L36 +R1 +L20 +L92 +R84 +L65 +L79 +R54 +L94 +L11 +L89 +R27 +L34 +R7 +R48 +L22 +L25 +L60 +R92 +R71 +R96 +L88 +L64 +L66 +R18 +R77 +R2 +L51 +L32 +L96 +R34 +R2 +L36 +L66 +R66 +R21 +R99 +R30 +L50 +R28 +L29 +R36 +L35 +L23 +L77 +L14 +R76 +L62 +L92 +R48 +R86 +R12 +L54 +L29 +R49 +R87 +R293 +R82 +R3 +R15 +L790 +L12 +R50 +L239 +R20 +R34 +L63 +R91 +R94 +R106 +L48 +L43 +L83 +L99 +R67 +L64 +R79 +L369 +R64 +L97 +R88 +R45 +R29 +R40 +L244 +R885 +L158 +R14 +R69 +L772 +L94 +R50 +R69 +L19 +R53 +R90 +R657 +L641 +R841 +R60 +R78 +R62 +L774 +R79 +L77 +R72 +L50 +L50 +L1 +L67 +L67 +R30 +L31 +L11 +L45 +R7 +L15 +L70 +L160 +R422 +L992 +R45 +L351 +L486 +L208 +R10 +L10 +L23 +R41 +L66 +R60 +R897 +L23 +L81 +L73 +R225 +R43 +L80 +L25 +L52 +R775 +L78 +R60 +L91 +L60 +L11 +R398 +L36 +R80 +L80 +L3 +L97 +R871 +L779 +L92 +R12 +L907 +L33 +L72 +R77 +L85 +R80 +R31 +L24 +L79 +R111 +L11 +L46 +L354 +L57 +R2 +L38 +L35 +R84 +R60 +R14 +R66 +L49 +L85 +R88 +L6 +R76 +L79 +L41 +R49 +L938 +L28 +R90 +L16 +R43 +R29 +L63 +R43 +R95 +R392 +R904 +L41 +R28 +R13 +R42 +L442 +L12 +R212 +R40 +L40 +L151 +L3 +R31 +L36 +R48 +R30 +R81 +R778 +R35 +R87 +R31 +R869 +R74 +R26 +L86 +R86 +R38 +L7 +R91 +L84 +L95 +R336 +L42 +L37 +R906 +R54 +L64 +L38 +L695 +R678 +R132 +R727 +R7 +R889 +L456 +L56 +L84 +R69 +L69 +R71 +L56 +R20 +L209 +L841 +R519 +R29 +L28 +R43 +L71 +R80 +L36 +R59 +L75 +R95 +L985 +L72 +R82 +R22 +L47 +L550 +L62 +L88 +R80 +L36 +L98 +L59 +L87 +L51 +R51 +L74 +L26 +L72 +L54 +R640 +L614 +R37 +L48 +L38 +L4 +L60 +L24 +L803 +R66 +R56 +R59 +R49 +L30 +R63 +R77 +L57 +L43 +L466 +L80 +R73 +R65 +R808 +L60 +L5 +R76 +L50 +R84 +R55 +L88 +L74 +L38 +L52 +L32 +L616 +R38 +R62 +R47 +L47 +L10 +L90 +L23 +L277 +L29 +R14 +R73 +L58 +R87 +L30 +L89 +R32 +R794 +R6 +L77 +L84 +L39 +L73 +R673 +R48 +L4 +L394 +R250 +R45 +L46 +R79 +L446 +L28 +L94 +L10 +L216 +R16 +R757 +L24 +R67 +L89 +L242 +R331 +L798 +L90 +R57 +L69 +L36 +R36 +R609 +L32 +L37 +L97 +R449 +R45 +R63 +L82 +L57 +R339 +R67 +L5 +L62 +L87 +L413 +R46 +L46 +R73 +R620 +R7 +L85 +L43 +R28 +L73 +L27 +R99 +R96 +R15 +R986 +R91 +R713 +R493 +R45 +R39 +L7 +L68 +R98 +R224 +L96 +R51 +L10 +L69 +L7 +L74 +L767 +L69 +R88 +R29 +R2 +R98 +R54 +R82 +L16 +L4 +R30 +L44 +R3 +R87 +L86 +L6 +R49 +R51 +R18 +R82 +R54 +R75 +R71 +R34 +L34 +L437 +L69 +R6 +L46 +R33 +L413 +R281 +L635 +L49 +L71 +R94 +L63 +R38 +L69 +L97 +R97 +R20 +L23 +L80 +L25 +R8 +L5 +R83 +R13 +L53 +L43 +L90 +R66 +L171 +L259 +L57 +R16 +L30 +R45 +R691 +L50 +L92 +R98 +L62 +L36 +R36 +R650 +L50 +L23 +L77 +R402 +L802 +L81 +R81 +L96 +L304 +R421 +R79 +L43 +R50 +L273 +L90 +R18 +L362 +R876 +R482 +L15 +L43 +R84 +R70 +L99 +R145 +L93 +R41 +L48 +L38 +L90 +L72 +R63 +R37 +R95 +L89 +L6 +R40 +R60 +L14 +R51 +R50 +R13 +L42 +R30 +R12 +R18 +L87 +R969 +R75 +L347 +L28 +R81 +R31 +L212 +R90 +L82 +L41 +L67 +L71 +L8 +L36 +L485 +R34 +R16 +L77 +L7 +L15 +L18 +L418 +R99 +L14 +L973 +L72 +L44 +R89 +R75 +R19 +L94 +L90 +R90 +R5 +L25 +L59 +L39 +R818 +R41 +R59 +L1 +R1 +L86 +L23 +L3 +L88 +L89 +R68 +L79 +L84 +R489 +R84 +R11 +R43 +R79 +L391 +R69 +R161 +R36 +L67 +L30 +L19 +R619 +R29 +L429 +L11 +R72 +L61 +R420 +R41 +L861 +R895 +R77 +R28 +R59 +L59 +R3 +L2 +R99 +L460 +L79 +R20 +R84 +L65 +R55 +R38 +R5 +L798 +L84 +L28 +L938 +R64 +L14 +L54 +L546 +L63 +R63 +L517 +L557 +L26 +R75 +L475 +L7 +L9 +R16 +L702 +L98 +L2 +L99 +R1 +L57 +L13 +R70 +L64 +L62 +L916 +L58 +R965 +R52 +L2 +L72 +R457 +R80 +R71 +L917 +R921 +L38 +R26 +R323 +L966 +L86 +L163 +R84 +L235 +R78 +R9 +R7 +R6 +R82 +R325 +R4 +L320 +L363 +R72 +R86 +R47 +L69 +R93 +R41 +L98 +L95 +R62 +L67 +R55 +L55 +R782 +L89 +L55 +L99 +L77 +R87 +R251 +L26 +R926 +R14 +R686 +L996 +L4 +L97 +L40 +L563 +L97 +L3 +R53 +L53 +L62 +R49 +L124 +R37 +R16 +L35 +L89 +R108 +R74 +L74 +L74 +R405 +L10 +R79 +L228 +R11 +R23 +R50 +R46 +L2 +R71 +R69 +L40 +L86 +L671 +R57 +L406 +R606 +R92 +R317 +L34 +R25 +L48 +L40 +R50 +L35 +L30 +L18 +L4 +L75 +L89 +L9 +L72 +R70 +L20 +L10 +R230 +R531 +L490 +R59 +R86 +R801 +L31 +L34 +R74 +R4 +L59 +L41 +R13 +R87 +R99 +L28 +L71 +R791 +R9 +L201 +R1 +R1 +L96 +L14 +R8 +L82 +L35 +R4 +L96 +L90 +L90 +R90 +L603 +R51 +L648 +R142 +R58 +R90 +L890 +R61 +L98 +R70 +L33 +R99 +L99 +L11 +L32 +L775 +L482 +L34 +L25 +R59 +R61 +R20 +L36 +R674 +R672 +L891 +L87 +R89 +R98 +R50 +R87 +L837 +R15 +R85 +L71 +R71 +L12 +R12 +R244 +R45 +L856 +R20 +R79 +L9 +R91 +R816 +L88 +R158 +R878 +R758 +R359 +R305 +L73 +L93 +R78 +L35 +L40 +L37 +L821 +R66 +R86 +R69 +R71 +R29 +R55 +R345 +L15 +L85 +L77 +R3 +L57 +R83 +R7 +L359 +L117 +L65 +R99 +R1 +L12 +R68 +L77 +R21 +L52 +L716 +R30 +L87 +R190 +R53 +R319 +L428 +L16 +L17 +R6 +L2 +R2 +R31 +R169 +L73 +R22 +R44 +R7 +L89 +L11 +L14 +R22 +L51 +R80 +R63 +L39 +L36 +L81 +R56 +L62 +L42 +L60 +L844 +R259 +L6 +L45 +L71 +R24 +R41 +R6 +R56 +R44 +R74 +R44 +L21 +L91 +L506 +R62 +R438 +L904 +R656 +L12 +R57 +L32 +L175 +L13 +R25 +L902 +L82 +R82 +R97 +L70 +R273 +L80 +R98 +R82 +R77 +L77 +L422 +R6 +R84 +R4 +L72 +R68 +L96 +R5 +R7 +L537 +R53 +L16 +L84 +L8 +R58 +L77 +R32 +R95 +L97 +L69 +L99 +L583 +R6 +R66 +R66 +L37 +L53 +R61 +L953 +R47 +R45 +L29 +R13 +L715 +L69 +L7 +R40 +L44 +L901 +R69 +L19 +R97 +R65 +L35 +L65 +L94 +R80 +R745 +L78 +R29 +L68 +L983 +R70 +L1 +L4 +L53 +L59 +R916 +L649 +R80 +L233 +R702 +L5 +R58 +L456 +R917 +R28 +L896 +R91 +L37 +R429 +R14 +R31 +L16 +L91 +R35 +R98 +R28 +L98 +R60 +L90 +R361 +R90 +L51 +R986 +L86 +R39 +L61 +L30 +R52 +L478 +L53 +R531 +L54 +L1 +L412 +L512 +R379 +L559 +L41 +L413 +R54 +R21 +L27 +L64 +L83 +L91 +R34 +L31 +L61 +R65 +R23 +L5 +L22 +R307 +R77 +L72 +L24 +R12 +R35 +L34 +R5 +L24 +L82 +R41 +L957 +L1 +L51 +L75 +R803 +L76 +R16 +R37 +R50 +L668 +L131 +R691 +R21 +L91 +L607 +R35 +L37 +R39 +L46 +R55 +R52 +R548 +R68 +R72 +L69 +R81 +L5 +R86 +L55 +L181 +R55 +L94 +R16 +R60 +R6 +L88 +L63 +L37 +L9 +L482 +R42 +L174 +R728 +L35 +L70 +R34 +L59 +L664 +R38 +L49 +R373 +R7 +L63 +R95 +L712 +L38 +R38 +R250 +L19 +R69 +R85 +R85 +L239 +L18 +L163 +L10 +R60 +R121 +R79 +L311 +L97 +L92 +R528 +L27 +L60 +R59 +R41 +L32 +L54 +R31 +L34 +R48 +R45 +L45 +L59 +R272 +R148 +L71 +R12 +R98 +R86 +R8 +L387 +L7 +R73 +R70 +R482 +L14 +R58 +R48 +L45 +R78 +R950 +R40 +L258 +L882 +L451 +L46 +L96 +R61 +R45 +R87 +R62 +L62 +L73 +L27 +L879 +R563 +L902 +L58 +L36 +R80 +L66 +L88 +L214 +L41 +L47 +R36 +R52 +L72 +R72 +R20 +L20 +R40 +L51 +R896 +R28 +R92 +L505 +L419 +R31 +L12 +R36 +R806 +L58 +R89 +R68 +R59 +R36 +L465 +L47 +R422 +L46 +R63 +L33 +R70 +L52 +L46 +L69 +R51 +R119 +R68 +L71 +L40 +R53 +R87 +R98 +R46 +R616 +R1 +L361 +L2 +R95 +L93 +L28 +R80 +L79 +R56 +R71 +L88 +R232 +R97 +L46 +R5 +L44 +L56 +R41 +L341 +R5 +L5 +L119 +L82 +R55 +L18 +L649 +R13 +R11 +L32 +L93 +L582 +L32 +L373 +R701 +L28 +L72 +L81 +R13 +L33 +R1 +L17 +L70 +L13 +R294 +R38 +L32 +R21 +L21 +R16 +R24 +R60 +L266 +L60 +L74 +L301 +L93 +R19 +R54 +L6 +R48 +L75 +L158 +R12 +L174 +R25 +R68 +R74 +R51 +R24 +R21 +R11 +R373 +R884 +L57 +R69 +R83 +R74 +R6 +L54 +L82 +L85 +L11 +R39 +R61 +L291 +L9 +R10 +L210 +R56 +R58 +R686 +L85 +R488 +R86 +L62 +L82 +R826 +R63 +R94 +L2 +R74 +L32 +R94 +R38 +L912 +R63 +L85 +R995 +R51 +R88 +R7 +R58 +L415 +L13 +L317 +L91 +L3 +R350 +L64 +R940 +R37 +R5 +L33 +L486 +L58 +L833 +L52 +R54 +L73 +R81 +L50 +R56 +L33 +R23 +R10 +R37 +L671 +L29 +L37 +L39 +L67 +R6 +R65 +L233 +L71 +L30 +L31 +R75 +L75 +L12 +R12 +R2 +R69 +L28 +L33 +R390 +R25 +L51 +L74 +L23 +L421 +L71 +R695 +R20 +L39 +R439 +R98 +R72 +R30 +L25 +R80 +R80 +L635 +L44 +R62 +L86 +R301 +R68 +L1 +L47 +L53 +R85 +L85 +R779 +R321 +R66 +L66 +R596 +L687 +L92 +L59 +R86 +R56 +L19 +R19 +L684 +R84 +R56 +L97 +R41 +R7 +L36 +L79 +R8 +R29 +R17 +L37 +L71 +R62 +L21 +R21 +L59 +L55 +L489 +L97 +L210 +R10 +R1 +R99 +R87 +L87 +R33 +L6 +L18 +R91 +R97 +R6 +R73 +R65 +R59 +L18 +L82 +L53 +L47 +L305 +R5 +L733 +L4 +R37 +L455 +R52 +L97 +R20 +L40 +R20 +R16 +R16 +L73 +R1 +R86 +R44 +R590 +R28 +R658 +L59 +R93 +L36 +R36 +R67 +R518 +L41 +L12 +R768 +L425 +R97 +R83 +L55 +R4 +R96 +R4 +L704 +L12 +L12 +R23 +L81 +R82 +L566 +L8 +R820 +R20 +L66 +L46 +R239 +L94 +R1 +R57 +R99 +L5 +L51 +L807 +R7 +R73 +R99 +R28 +L39 +L81 +L8 +R28 +L77 +R28 +L47 +L18 +R9 +R888 +L8 +L83 +R175 +L87 +L80 +R31 +R25 +R16 +L672 +R15 +L23 +L28 +R36 +R77 +R23 +R546 +R80 +L26 +R24 +L82 +L65 +L94 +L571 +R88 +L12 +L75 +L94 +L56 +R37 +L38 +R38 +L55 +R355 +R42 +L42 +R9 +R91 +R60 +R58 +R52 +R640 +L210 +L22 +R80 +L20 +L38 +R60 +L60 +R97 +R43 +R77 +L145 +L72 +R89 +R36 +R75 +R93 +R18 +R87 +L898 +L97 +L3 +L59 +L8 +R428 +R39 +R399 +L44 +L55 +L846 +L11 +R74 +R80 +R13 +L86 +L66 +R242 +R39 +L739 +R4 +L4 +R6 +L38 +L68 +L21 +L322 +L79 +L52 +R274 +R13 +R87 +L508 +L31 +L49 +L52 +R51 +R73 +R24 +L8 +R76 +R24 +L50 +L50 +L92 +R89 +L697 +L85 +L15 +L37 +L63 +R36 +R764 +R29 +R71 +L80 +R12 +R28 +L59 +R93 +L784 +L697 +L13 +R37 +R39 +L8 +L68 +R59 +L59 +R11 +R17 +R88 +R98 +L14 +L133 +R3 +R98 +L92 +R85 +R23 +R16 +R19 +L19 +R58 +R574 +R79 +R62 +L47 +L68 +L58 +L91 +R93 +R98 +R14 +R486 +L97 +R97 +R56 +R35 +R87 +R74 +R82 +R67 +L1 +L84 +L23 +R331 +L4 +R682 +R26 +R772 +R3 +L905 +R2 +L64 +R119 +L55 +R385 +R15 +L6 +L65 +L247 +L54 +R51 +R44 +L323 +L24 +R21 +L86 +L31 +R20 +R38 +R43 +R19 +R405 +L45 +R40 +L193 +R273 +R20 +L78 +R78 +L641 +R41 +L380 +R80 +R81 +R57 +L414 +L93 +R45 +L76 +L274 +R39 +R35 +L977 +L823 +R60 +R91 +L81 +L70 +R41 +R58 +L10 +L76 +R58 +R11 +L26 +L45 +L23 +R63 +L65 +L86 +L59 +R13 +R80 +R66 +R59 +L59 +L30 +L86 +L184 +L45 +L52 +L203 +R20 +L88 +L32 +R87 +L94 +R71 +L64 +L4 +R76 +R28 +R34 +L7 +R72 +L99 +R275 +L75 +L19 +L92 +R486 +L75 +L15 +L84 +R50 +L51 +L24 +R351 +R76 +R75 +R22 +R632 +L332 +R90 +R129 +L80 +R46 +L49 +R27 +L33 +L30 +R49 +R51 +L74 +R74 +R15 +L32 +R72 +L42 +L43 +R14 +L35 +L94 +L255 +R78 +L421 +R543 +R63 +L19 +R22 +L58 +R92 +L59 +R792 +R715 +R49 +R47 +R41 +L56 +L61 +R16 +L84 +R673 +L58 +R99 +R86 +R46 +L402 +R66 +L10 +L63 +L111 +R58 +L84 +R78 +L29 +L78 +R57 +R87 +R85 +R852 +L13 +R31 +L70 +L98 +R98 +L1 +L38 +L61 +R2 +L59 +R410 +R42 +L95 +L79 +L21 +R688 +L88 +R25 +L84 +L36 +L5 +R4 +L4 +L86 +L43 +R353 +R59 +L36 +L51 +L26 +R30 +R3 +L83 +L20 +L80 +R80 +R28 +L28 +L29 +L57 +R96 +R55 +L13 +R48 +R68 +L22 +L46 +R84 +L80 +L88 +R98 +L59 +R85 +L287 +L449 +R96 +L991 +L178 +R18 +L49 +L916 +R16 +R13 +R87 +L76 +L25 +L99 +L86 +L358 +R74 +R48 +R922 +L54 +L76 +R48 +R16 +R17 +L51 +L20 +L80 +R579 +R21 +R30 +R974 +R96 +L68 +L32 +R52 +L85 +R840 +L64 +R30 +L64 +R72 +L61 +L85 +R865 +R59 +L93 +R1 +L44 +L756 +L67 +L3 +R14 +R451 +R738 +L635 +R35 +R25 +L25 +L99 +L1 +L28 +R555 +R397 +L41 +L83 +R473 +L12 +R39 +L2 +R62 +R17 +R62 +L823 +R84 +R878 +L78 +R17 +L32 +L85 +R480 +R27 +L10 +R423 +L89 +R52 +L60 +R77 +L539 +L24 +L44 +L30 +R437 +L6 +L94 +R8 +R92 +R31 +R24 +L22 +R67 +L50 +R50 +L49 +L31 +R614 +L634 +L493 +R395 +L9 +R37 +R72 +L38 +R936 +R94 +L30 +L64 +R113 +R87 +R65 +R44 +R33 +L42 +R97 +L48 +L65 +L84 +L63 +R55 +L30 +R37 +R15 +R86 +R8 +L708 +R516 +R84 +L51 +L49 +L86 +L81 +L33 +L29 +L548 +L23 +R67 +L22 +R23 +R32 +L383 +L310 +R40 +L47 +L56 +R78 +L984 +L89 +R68 +L17 +R11 +L32 +L38 +R59 +R39 +L39 +L67 +L73 +L334 +R74 +R53 +R3 +R624 +L34 +R275 +R83 +R76 +L80 +L604 +R70 +L586 +R63 +L43 +L32 +R32 +L23 +L177 +R41 +L21 +R829 +L49 +R862 +R99 +R70 +L31 +R30 +R70 +R14 +R19 +L772 +L286 +R25 +R89 +L716 +L73 +L267 +L160 +L73 +R38 +R23 +R53 +R13 +L27 +R36 +L84 +R48 +R64 +L72 +L49 +R71 +L14 +L52 +L48 +L17 +R17 +R45 +R55 +L56 +L344 +L44 +R9 +L553 +R958 +R54 +R111 +R12 +L87 +L592 +L25 +L651 +R33 +L88 +R63 +L32 +L95 +L20 +R713 +R257 +L23 +R10 +R764 +R89 +L25 +L38 +L14 +R94 +L780 +L18 +L43 +L139 +L85 +R85 +R39 +L379 +R340 +L24 +L76 +R25 +L97 +R72 +L45 +R75 +L43 +R547 +L34 +R44 +L44 +R36 +L29 +R99 +L80 +L40 +R37 +L67 +L56 +R62 +L62 +R96 +L62 +L34 +R28 +L97 +R229 +L5 +R8 +L63 +R95 +L10 +L59 +L450 +R184 +R59 +R172 +L91 +R464 +L411 +R635 +R166 +L487 +L54 +L92 +L846 +L47 +R18 +R76 +L204 +L618 +R89 +L14 +R525 +L917 +R17 +R21 +R373 +R720 +L14 +R76 +R43 +L75 +R45 +L608 +L276 +L1 +R96 +L81 +L819 +L146 +L95 +R41 +R29 +L129 +L506 +R18 +R88 +R89 +L37 +L52 +R44 +R52 +R60 +L68 +R50 +R82 +R276 +R904 +R97 +L97 +L94 +L441 +R35 +L84 +L63 +L70 +L37 +L91 +R45 +R7 +R58 +R35 +L35 +R26 +L12 +L80 +R614 +R51 +L364 +L812 +L34 +R24 +L65 +L576 +R63 +L61 +L58 +L56 +L425 +L14 +L88 +R2 +L45 +L64 +L93 +R72 +L1 +L69 +R63 +R759 +R781 +L77 +L64 +L6 +R61 +R85 +R98 +R78 +R18 +R67 +L63 +L25 +R13 +L4 +R16 +L94 +L56 +L32 +R82 +L95 +R37 +R69 +R47 +R84 +R28 +L270 +R625 +L21 +R96 +R61 +L75 +R39 +L25 +L779 +L21 +R61 +R30 +R12 +L88 +L72 +R8 +L51 +L188 +L12 +R56 +L16 +L40 +L753 +R48 +L27 +L517 +L151 +L87 +L885 +L45 +L397 +L385 +R64 +L65 +L79 +L31 +L452 +L838 +R74 +R94 +R8 +R68 +R87 +R69 +L61 +L66 +R95 +L68 +R58 +L82 +L76 +L16 +L19 +L665 +L68 +R868 +L32 +L68 +R78 +R994 +L36 +R182 +L20 +R2 +L907 +R14 +L24 +L189 +R906 +R91 +L91 +R90 +L90 +L5 +L87 +R92 +L88 +R67 +L23 +R72 +L39 +R80 +R31 +L83 +R593 +L3 +L7 +L63 +L44 +R99 +R678 +R81 +R11 +L62 +R913 +R41 +L12 +R58 +R913 +L13 +R8 +R49 +R43 +R692 +R8 +L42 +R94 +R48 +R3 +R97 +L221 +L379 +L77 +L22 +R99 +R41 +R88 +L23 +R7 +R64 +L77 +L780 +R161 +L59 +R78 +R94 +R806 +L24 +R23 +L60 +L8 +R60 +R91 +L82 +R40 +L39 +L45 +R44 +R465 +L804 +L36 +L90 +L3 +L32 +R51 +R49 +R242 +L42 +R67 +L25 +R15 +L43 +L86 +L28 +R32 +R68 +R2 +L15 +R713 +R80 +L80 +L5 +L7 +R12 +L86 +L14 +R39 +L39 +R70 +L379 +R9 +R79 +R21 +L24 +R33 +R86 +R88 +L83 +L88 +L12 +R8 +L239 +L92 +R57 +R27 +R79 +R417 +R912 +L91 +L758 +L26 +R23 +L17 +R2 +L6 +L239 +R43 +L746 +L36 +R82 +R23 +R77 +L664 +R744 +L80 +L86 +L51 +R405 +R186 +L54 +L97 +L48 +L10 +L19 +R52 +L487 +R47 +R862 +L165 +R66 +L1 +R49 +L49 +L490 +L10 +R903 +R97 +R67 +L67 +R64 +L64 +R4 +R9 +R84 +L97 +L99 +L1 +R29 +L93 +R95 +R398 +L729 +L84 +L14 +L63 +R861 +R46 +R949 +L26 +L169 +R920 +R4 +R76 +L91 +R91 +L32 +R83 +L97 +L54 +L96 +R43 +L850 +L97 +L11 +R11 +R190 +R57 +L47 +L82 +R82 +L92 +L308 +L3 +L41 +R89 +L545 +L62 +R7 +R74 +R81 +L40 +R40 +R32 +L799 +R71 +L56 +R2 +R78 +R47 +L75 +L90 +L10 +L62 +R62 +L10 +L42 +L448 +R97 +L674 +R53 +R88 +R468 +R68 +L95 +R14 +R81 +L72 +R72 +R33 +L33 +R56 +R50 +R21 +R73 +L92 +L47 +L52 +L9 +R26 +L826 +R26 +L26 +L85 +R43 +L58 +L74 +L25 +R823 +R74 +R12 +R90 +L6 +R18 +R88 +R4 +L4 +L74 +R146 +L15 +L24 +R98 +R69 +L55 +R97 +L42 +R67 +L771 +L96 +R90 +R10 +R12 +L28 +R75 +L26 +R288 +R179 +R54 +R46 +R77 +L77 +R4 +L58 +R30 +L12 +R36 +L78 +L92 +R26 +R16 +L72 +R98 +L50 +L51 +R77 +L57 +R27 +R49 +R7 +R85 +R15 +L803 +L43 +L54 +R20 +L20 +L22 +L743 +R649 +R42 +L126 +R65 +L65 +R74 +L13 +L186 +R82 +R9 +L66 +R88 +L86 +R98 +R89 +R124 +R53 +L31 +R98 +L42 +R609 +R26 +R52 +R38 +R51 +R152 +R81 +R14 +R285 +R8 +L71 +R9 +R27 +L665 +R44 +R32 +R33 +L890 +L26 +L43 +L57 +L48 +L10 +L70 +R128 +R188 +R12 +R87 +R13 +L38 +R67 +R87 +L188 +L18 +L10 +L79 +L21 +L80 +R80 +L64 +R37 +R627 +R35 +R7 +R58 +R63 +R64 +R973 +R30 +R39 +R531 +L20 +R360 +L40 +L13 +L22 +R35 +L88 +R88 +R457 +R69 +L26 +R574 +L39 +R16 +R92 +R496 +L39 +R26 +R347 +R27 +R74 +R26 +L95 +L7 +R40 +R764 +R59 +R803 +R92 +L438 +L18 +L10 +L20 +L86 +L84 +L13 +R470 +L67 +L890 +R846 +R52 +R35 +L14 +L19 +R75 +R458 +L524 +R91 +R9 +L9 +R982 +L30 +L152 +L460 +L562 +L478 +R13 +L918 +L590 +L705 +R663 +R37 +L55 +L45 +L610 +L90 +R598 +L98 +L78 +L64 +L617 +L94 +L47 +L2 +R102 +L56 +R90 +R5 +R88 +R68 +R44 +R45 +R12 +R324 +L75 +L874 +L49 +L92 +R30 +R40 +R26 +R22 +R524 +R98 +R52 +L17 +R42 +L47 +R1 +R99 +L15 +R215 +L67 +R67 +L65 +L573 +L51 +R5 +R297 +L32 +L33 +R35 +R22 +L61 +R83 +L27 +R81 +R19 +R95 +L87 +L8 +R60 +R840 +R78 +L21 +R432 +L67 +L97 +L4 +R63 +R16 +L21 +R21 +R956 +L56 +R17 +R83 +R5 +R80 +L23 +R38 +L112 +R34 +R16 +L275 +L84 +L79 +L443 +R43 +L29 +R759 +R31 +R26 +L78 +L9 +R4 +R34 +R62 +R23 +L93 +L193 +L4 +L29 +R49 +L27 +R74 +L403 +L305 +R941 +L41 +R96 +L50 +R62 +L52 +L62 +R47 +L15 +R64 +R24 +L6 +L89 +R189 +L22 +R20 +L998 +L29 +R134 +L605 +R83 +L80 +R75 +L78 +L38 +L21 +L64 +L892 +R415 +R74 +L55 +L60 +L20 +R47 +L786 +L49 +R45 +R41 +L37 +R16 +R56 +L46 +R12 +L38 +R474 +R97 +R21 +R66 +R2 +L160 +R76 +R24 +R42 +L77 +R35 +R1 +L20 +R34 +R59 +L74 +R46 +L30 +R84 +R86 +R14 +R47 +R73 +L720 +L40 +L13 +R78 +R75 +L38 +R70 +L32 +R74 +R579 +R94 +R95 +R58 +L12 +L88 +R977 +L53 +R76 +R959 +R60 +L819 +R22 +L20 +R62 +R36 +L3 +L16 +L481 +L33 +L67 +R3 +R97 +R35 +L235 +L99 +L3 +L924 +L74 +L344 +R18 +L74 +R10 +R39 +R441 +L96 +L94 +R520 +L14 +L36 +R30 +L25 +L75 +L21 +L79 +L28 +R76 +R52 +R26 +R38 +R44 +R22 +L6 +R49 +L32 +L41 +L765 +L235 +R92 +L92 +R70 +R10 +R20 +R867 +R83 +L99 +R49 +L86 +L68 +L68 +L19 +L664 +L3 +R1 +R7 +L42 +R975 +R63 +L982 +R86 +R48 +L48 +R922 +R378 +R785 +L288 +R140 +L37 +R97 +R66 +R697 +R40 +L73 +L923 +L4 +R509 +R35 +L44 +L96 +R96 +L88 +R88 +R96 +L56 +R96 +L72 +R827 +R9 +L131 +L1 +R32 +L22 +L78 +R6 +L6 +L57 +R57 +L31 +R31 +R88 +R56 +L84 +L22 +L92 +L63 +L90 +L93 +L93 +L90 +R592 +L6 +R1 +R96 +R44 +L44 +R94 +R6 +L72 +R38 +R3 +L69 +R16 +R95 +L82 +R61 +L90 +R187 +R13 +R95 +L70 +L25 +R96 +L46 +L95 +L23 +L81 +R49 +L85 +R19 +R21 +L26 +R88 +R83 +L26 +L74 +L51 +R79 +L588 +R94 +L43 +R661 +R449 +L42 +R34 +R85 +R22 +L38 +L96 +R22 +L74 +L29 +L21 +R424 +R26 +R4 +R8 +L983 +L69 +L968 +R63 +L347 +L4 +L18 +R5 +R695 +L29 +L171 +R40 +R60 +R92 +R14 +L6 +R31 +L614 +R20 +L960 +R842 +R36 +R845 +R26 +L32 +R6 +L26 +L712 +R60 +R637 +L54 +L5 +R584 +L84 +L83 +R883 +R63 +R91 +L74 +R871 +R11 +R75 +L612 +L225 +L246 +R30 +L59 +L25 +L55 +L48 +L97 +R61 +L61 +L49 +R80 +L31 +R14 +L14 +R8 +R92 +L436 +L18 +L961 +R15 +L23 +R47 +R288 +L12 +R84 +R7 +L91 +R63 +R42 +L5 +L65 +R65 +R93 +L45 +L72 +L76 +L56 +L44 +L188 +L22 +L90 +R84 +R19 +L80 +L23 +L24 +L951 +R74 +R1 +R87 +R13 +R32 +R84 +R84 +R22 +R178 +L207 +L93 +R93 +L93 +R5 +L7 +L98 +L11 +L822 +L867 +L73 +L227 +L503 +R103 +R312 +R66 +L78 +R627 +R33 +L77 +L48 +L35 +L77 +R277 +R73 +R47 +L20 +L10 +L63 +R65 +R8 +R80 +R82 +L534 +R89 +L17 +L78 +L76 +R9 +R45 +L174 +R274 +L40 +R47 +L67 +L575 +L11 +R12 +R912 +R52 +R23 +R47 +L48 +R20 +R1 +L65 +L48 +R31 +L91 +L50 +R12 +R32 +L694 +L53 +L47 +L22 +L78 +R86 +L86 +R53 +R981 +L15 +R23 +R58 +L54 +R54 +L85 +L415 +R38 +R62 +R44 +R25 +L69 +L465 +R58 +L27 +R84 +L26 +L24 +R28 +L28 +R82 +L49 +L10 +R59 +R67 +R22 +L72 +L76 +R72 +L95 +L33 +L79 +R34 +R56 +R22 +L17 +L83 +L83 +R236 +R47 +L7 +R725 +L20 +L98 +R36 +L24 +R88 +R57 +R43 +L570 +R926 +R844 +L102 +L28 +R30 +L924 +R1 +R24 +L40 +R939 +L69 +L531 +R831 +R17 +R24 +R28 +L43 +R582 +R35 +L87 +L83 +R38 +L979 +L27 +L36 +L75 +R875 +L92 +L8 +R81 +R20 +R99 +L12 +L2 +L59 +L29 +R64 +L87 +R28 +L66 +L36 +R46 +R29 +R99 +L222 +L698 +L55 +R19 +L33 +L86 +R93 +L93 +L699 +R99 +L56 +L271 +L73 +R27 +L27 +R53 +L12 +R19 +R40 +L62 +L99 +R72 +R108 +L549 +R67 +R13 +R89 +R201 +R77 +R96 +R46 +L35 +L877 +R653 +L5 +L95 +L24 +R663 +R96 +L60 +R498 +R927 +R22 +L822 +R40 +R660 +L19 +R35 +R584 +L320 +L84 +L42 +L54 +L35 +R16 +L81 +L85 +L1 +R19 +R84 +R36 +L555 +R19 +R14 +L69 +L962 +R19 +R70 +R11 +L10 +R45 +L84 +R27 +L9 +R996 +R59 +R76 +L357 +R57 +R84 +R80 +R36 +L83 +R302 +L56 +L387 +R24 +R9 +L593 +L16 +R13 +L13 +R74 +L74 +L7 +R15 +L23 +L85 +R87 +R21 +L86 +L22 +L484 +L29 +R129 +R284 +R243 +L43 +R204 +L104 +L578 +R96 +R309 +R73 +L62 +R2 +R31 +L71 +R38 +L38 +L57 +L25 +L17 +L47 +L21 +L33 +L93 +L807 +L36 +R26 +R749 +L39 +R95 +L990 +L78 +R78 +R95 +L40 +L91 +L69 +L63 +L37 +L69 +R74 +R95 +L89 +L18 +R37 +R270 +R44 +L91 +R68 +L31 +L49 +R62 +R97 +R62 +R7 +L71 +L98 +L77 +R14 +L37 +L19 +L788 +R7 +R92 +R20 +L550 +R38 +L171 +R97 +R74 +R512 +R35 +R71 +L18 +R2 +L97 +R35 +L97 +L134 +L9 +L97 +R97 +R91 +L99 +R80 +R50 +L32 +L190 +L836 +R89 +L39 +L2 +R87 +R1 +L76 +L84 +R54 +R6 +R48 +L56 +R8 +L805 +R22 +L17 +R85 +L60 +R80 +R95 +L5 +R12 +L7 +L512 +L66 +L73 +R314 +L63 +R69 +R924 +L63 +L130 +L33 +R688 +R83 +L12 +R280 +L83 +R46 +L93 +L237 +R661 +R36 +R43 +R898 +R23 +L25 +R297 +L899 +L973 +R513 +R30 +R57 +R563 +L67 +R413 +R91 +L31 +R70 +R561 +R3 +R53 +R44 +L29 +R29 +R21 +R179 +R62 +R38 +R44 +L43 +R899 +L91 +L9 +L49 +R49 +R10 +R13 +R477 +L35 +R620 +L85 +L212 +L1 +L87 +L45 +L235 +R21 +L24 +R83 +R34 +R45 +R40 +R81 +R21 +L183 +L38 +L52 +R746 +L56 +R621 +R41 +R32 +L31 +L1 +R44 +R568 +L94 +R334 +R48 +L82 +R782 +L922 +R22 +R472 +L4 +R25 +R1 +R6 +R356 +L7 +R61 +R8 +L31 +R75 +R442 +L64 +R202 +R58 +L76 +R44 +R32 +L13 +L221 +L79 +R25 +L970 +L21 +R79 +R11 +R10 +L21 +R27 +L44 +L107 +R45 +R92 +R40 +R41 +R806 +L86 +R62 +R24 +R97 +R3 +L201 +R1 +L46 +L54 +L36 +L564 +L55 +L45 +R78 +R1 +L83 +R4 +L28 +R21 +L51 +L80 +R3 +L65 +L81 +R51 +R27 +L497 +L81 +L70 +R51 +R9 +L65 +R55 +R1 +R4 +L9 +L50 +R67 +R88 +R403 +L3 +L196 +R72 +R94 +L70 +R785 +R15 +L30 +L52 +L18 +R924 +R676 +L44 +L685 +L6 +R49 +L14 +L93 +L7 +L9 +L34 +R44 +L79 +L679 +L72 +L50 +L21 +R15 +L44 +R29 +L31 +R91 +L160 +L54 +R70 +L16 +L55 +L45 +R27 +L21 +L54 +L86 +L66 +R83 +L83 +R6 +L6 +R9 +R91 +R92 +L92 +L71 +R57 +L53 +R34 +R33 +R37 +L57 +L80 +R20 +L20 +L15 +L97 +R97 +L85 +R13 +L70 +L29 +L24 +R8 +R56 +L54 +L45 +L87 +L86 +L82 +R66 +L66 +R60 +L60 +R29 +L19 +R11 +R79 +L63 +R19 +L51 +R95 +L63 +R15 +L37 +L46 +L43 +L46 +L37 +R6 +L20 +R6 +R12 +R17 +R29 +R40 +R2 +L22 +R28 +R21 +R31 +L6 +R45 +R15 +L28 +L32 +L20 +R14 +R17 +L23 +L23 +R48 +R33 +L37 +L41 +L50 +L30 +R35 +R28 +L35 +L37 +R16 +R7 +L41 +L38 +R13 +L40 +R33 +R49 +R6 +L47 +L4 +L11 diff --git a/src/day1.c b/src/day1.c new file mode 100644 index 0000000..50d8617 --- /dev/null +++ b/src/day1.c @@ -0,0 +1,62 @@ +#include +#include +#include + +#define MAX_LINE 64 +char line[MAX_LINE + 1]; +int part1(); +int part2(); + +int main() { + // printf("Result: %d", part1()); + printf("Result: %d", part2()); + return 0; +} + +int part2() { + int position = 50; + int count = 0; + while (fgets(line, MAX_LINE, stdin) != NULL) { + position = position % 100; + + line[strlen(line) - 1] = '\0'; + + int direction = 0; + if (line[0] == 'L') { + direction = -1; + } else { + direction = 1; + } + + int offset = direction * atoi(&line[1]); + + int full_rot = offset / 100; + int part_rot = offset - (100 * full_rot); + count += abs(full_rot) + ((part_rot < 0 && abs(part_rot) > position) || + (part_rot > 0 && (100 - position) <= part_rot)); + position += offset; + } + return count; +} + +int part1() { + int position = 50; + int count = 0; + while (fgets(line, MAX_LINE, stdin) != NULL) { + line[strlen(line) - 1] = '\0'; + + int direction = 0; + if (line[0] == 'L') { + direction = -1; + } else { + direction = 1; + } + + int offset = direction * atoi(&line[1]); + + position += offset; + count += (position % 100 == 0); + } + printf("part1 count: %d\n", count); + return count; +}