setup 2024

This commit is contained in:
Evan Burkey 2024-12-02 06:22:25 -08:00
parent a4fbc02b32
commit 924caa936c
32 changed files with 336 additions and 10 deletions

View File

@ -17,10 +17,11 @@ file(GLOB SRC2020 src/2020/*.c)
file(GLOB SRC2021 src/2021/*.c)
file(GLOB SRC2022 src/2022/*.c)
file(GLOB SRC2023 src/2023/*.c)
file(GLOB SRC2024 src/2024/*.c)
file(COPY input DESTINATION ${CMAKE_BINARY_DIR})
add_executable(advent ${SRC} ${SRC2015} ${SRC2016} ${SRC2017} ${SRC2018} ${SRC2019} ${SRC2020} ${SRC2021} ${SRC2022} ${SRC2023})
add_executable(advent ${SRC} ${SRC2015} ${SRC2016} ${SRC2017} ${SRC2018} ${SRC2019} ${SRC2020} ${SRC2021} ${SRC2022} ${SRC2023} ${SRC2024})
if ((${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD"))
target_link_libraries(advent PRIVATE flint)

View File

@ -6,7 +6,7 @@ Advent Of Code solutions using C99. Builds and runs on macOS, Linux, and OpenBSD
Be sure to clone the project with its submodules:
git clone --recurse-submodules https://git.burkey.co/eburk/advent
git clone --recurse-submodules https://gitlab.com/eburk/aoc
This project relies on several BSD extensions to the stdlib. OpenBSD and macOS users should be able to build the project out of the box. Linux users will need `libbsd` installed. The package is called `libbsd-dev` on Debian-based systems.

View File

@ -2,7 +2,7 @@
mkdir -p include
for year in {2023..2023}; do
for year in {2015..2024}; do
rm -rf "src/${year}"
mkdir -p "src/${year}"

View File

@ -4,8 +4,21 @@ get(){
curl -s --cookie "session=$1" "$2" | perl -pe 'chomp if eof' > "$3"
}
rm -rf input
for year in {2015..2023}; do
if [ -n "${2+x}" ] && [ -n "${3+x}" ]; then
year="20$2"
day="$3"
if [ "$day" -lt 10 ]; then
d="0$day"
else
d="$day"
fi
url="https://adventofcode.com/$year/day/$day/input"
get "$1" "$url" "input/$year/$d"
exit 0
fi
#rm -rf input
for year in {2015..2024}; do
mkdir -p input/"$year"
for day in {1..25}; do
if [[ day -lt 10 ]]; then

58
include/advent2024.h Normal file
View File

@ -0,0 +1,58 @@
#ifndef ADVENT_2024_H
#define ADVENT_2024_H
void advent2024day01(void);
void advent2024day02(void);
void advent2024day03(void);
void advent2024day04(void);
void advent2024day05(void);
void advent2024day06(void);
void advent2024day07(void);
void advent2024day08(void);
void advent2024day09(void);
void advent2024day10(void);
void advent2024day11(void);
void advent2024day12(void);
void advent2024day13(void);
void advent2024day14(void);
void advent2024day15(void);
void advent2024day16(void);
void advent2024day17(void);
void advent2024day18(void);
void advent2024day19(void);
void advent2024day20(void);
void advent2024day21(void);
void advent2024day22(void);
void advent2024day23(void);
void advent2024day24(void);
void advent2024day25(void);
void (*solutions2024[25])(void) = {
advent2024day01,
advent2024day02,
advent2024day03,
advent2024day04,
advent2024day05,
advent2024day06,
advent2024day07,
advent2024day08,
advent2024day09,
advent2024day10,
advent2024day11,
advent2024day12,
advent2024day13,
advent2024day14,
advent2024day15,
advent2024day16,
advent2024day17,
advent2024day18,
advent2024day19,
advent2024day20,
advent2024day21,
advent2024day22,
advent2024day23,
advent2024day24,
advent2024day25
};
#endif

View File

@ -1,13 +1,13 @@
#include <stdio.h>
#include <stdlib.h>
#include "advent_utility.h"
#include <lfinput.h>
void advent2015day05(void) {
/* Sometimes, grep really is the best tool */
char *p1 = capture_system(
"grep -E \"(.*[aeiou]){3}\" ./input/2015/05 | grep \"\\(.\\)\\1\" | egrep -v \"(ab|cd|pq|xy)\" | wc -l");
char *p2 = capture_system("grep \"\\(..\\).*\\1\" ./input/2015/05 | grep \"\\(.\\).\\1\" | wc -l");
const char *p1 = capture_system(
"grep -E \"(.*[aeiou]){3}\" ./input/2015/05 | grep \"\\(.\\)\\1\" | egrep -v \"(ab|cd|pq|xy)\" | wc -l", 0);
const char *p2 = capture_system("grep \"\\(..\\).*\\1\" ./input/2015/05 | grep \"\\(.\\).\\1\" | wc -l", 0);
printf("%s%s", p1, p2);

10
src/2024/01.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day01(void) {
char *input = get_input("input/2024/01");
printf("Solution for Day 01 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/02.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day02(void) {
char *input = get_input("input/2024/02");
printf("Solution for Day 02 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/03.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day03(void) {
char *input = get_input("input/2024/03");
printf("Solution for Day 03 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/04.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day04(void) {
char *input = get_input("input/2024/04");
printf("Solution for Day 04 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/05.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day05(void) {
char *input = get_input("input/2024/05");
printf("Solution for Day 05 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/06.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day06(void) {
char *input = get_input("input/2024/06");
printf("Solution for Day 06 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/07.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day07(void) {
char *input = get_input("input/2024/07");
printf("Solution for Day 07 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/08.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day08(void) {
char *input = get_input("input/2024/08");
printf("Solution for Day 08 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/09.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day09(void) {
char *input = get_input("input/2024/09");
printf("Solution for Day 09 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/10.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day10(void) {
char *input = get_input("input/2024/10");
printf("Solution for Day 10 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/11.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day11(void) {
char *input = get_input("input/2024/11");
printf("Solution for Day 11 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/12.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day12(void) {
char *input = get_input("input/2024/12");
printf("Solution for Day 12 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/13.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day13(void) {
char *input = get_input("input/2024/13");
printf("Solution for Day 13 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/14.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day14(void) {
char *input = get_input("input/2024/14");
printf("Solution for Day 14 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/15.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day15(void) {
char *input = get_input("input/2024/15");
printf("Solution for Day 15 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/16.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day16(void) {
char *input = get_input("input/2024/16");
printf("Solution for Day 16 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/17.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day17(void) {
char *input = get_input("input/2024/17");
printf("Solution for Day 17 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/18.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day18(void) {
char *input = get_input("input/2024/18");
printf("Solution for Day 18 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/19.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day19(void) {
char *input = get_input("input/2024/19");
printf("Solution for Day 19 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/20.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day20(void) {
char *input = get_input("input/2024/20");
printf("Solution for Day 20 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/21.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day21(void) {
char *input = get_input("input/2024/21");
printf("Solution for Day 21 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/22.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day22(void) {
char *input = get_input("input/2024/22");
printf("Solution for Day 22 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/23.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day23(void) {
char *input = get_input("input/2024/23");
printf("Solution for Day 23 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/24.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day24(void) {
char *input = get_input("input/2024/24");
printf("Solution for Day 24 of 2024 is not completed yet\n");
free(input);
}

10
src/2024/25.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include "lfinput.h"
void advent2024day25(void) {
char *input = get_input("input/2024/25");
printf("Solution for Day 25 of 2024 is not completed yet\n");
free(input);
}

View File

@ -16,6 +16,7 @@
#include "advent2021.h"
#include "advent2022.h"
#include "advent2023.h"
#include "advent2024.h"
int main(int argc, char **argv) {
if (argc != 3) {
@ -27,7 +28,7 @@ int main(int argc, char **argv) {
char buf[32];
const char *errstr = NULL;
year = strtonum(argv[1], 15, 23, &errstr);
year = strtonum(argv[1], 15, 24, &errstr);
if (NULL != errstr) {
printf("Input error: %s\n\n", errstr);
return 1;
@ -67,6 +68,9 @@ int main(int argc, char **argv) {
case 23:
solutions2023[day - 1]();
break;
case 24:
solutions2024[day - 1]();
break;
}
return 0;