Initial commit. Day 1 solved
This commit is contained in:
commit
2c7db5c4a0
|
|
@ -0,0 +1,2 @@
|
|||
build/
|
||||
.cache/
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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 ]);
|
||||
};
|
||||
});
|
||||
};
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,62 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
Loading…
Reference in New Issue