add support for multiple Advent of Code years
This commit is contained in:
parent
4547fe2238
commit
433472ebb8
1000
2023/day1/input.txt
Normal file
1000
2023/day1/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
15
2023/day1/input.txt.h
Normal file
15
2023/day1/input.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2023_day1_input_txt_start __asm("_binary_2023_day1_input_txt_start");
|
||||
extern uint32_t _binary_2023_day1_input_txt_end __asm("_binary_2023_day1_input_txt_end");
|
||||
extern uint32_t _binary_2023_day1_input_txt_size __asm("_binary_2023_day1_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
4
2023/day1/sample1.txt
Normal file
4
2023/day1/sample1.txt
Normal file
@ -0,0 +1,4 @@
|
||||
1abc2
|
||||
pqr3stu8vwx
|
||||
a1b2c3d4e5f
|
||||
treb7uchet
|
15
2023/day1/sample1.txt.h
Normal file
15
2023/day1/sample1.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2023_day1_sample1_txt_start __asm("_binary_2023_day1_sample1_txt_start");
|
||||
extern uint32_t _binary_2023_day1_sample1_txt_end __asm("_binary_2023_day1_sample1_txt_end");
|
||||
extern uint32_t _binary_2023_day1_sample1_txt_size __asm("_binary_2023_day1_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
7
2023/day1/sample2.txt
Normal file
7
2023/day1/sample2.txt
Normal file
@ -0,0 +1,7 @@
|
||||
two1nine
|
||||
eightwothree
|
||||
abcone2threexyz
|
||||
xtwone3four
|
||||
4nineeightseven2
|
||||
zoneight234
|
||||
7pqrstsixteen
|
15
2023/day1/sample2.txt.h
Normal file
15
2023/day1/sample2.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2023_day1_sample2_txt_start __asm("_binary_2023_day1_sample2_txt_start");
|
||||
extern uint32_t _binary_2023_day1_sample2_txt_end __asm("_binary_2023_day1_sample2_txt_end");
|
||||
extern uint32_t _binary_2023_day1_sample2_txt_size __asm("_binary_2023_day1_sample2_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
11
2023/day1/solution.c
Normal file
11
2023/day1/solution.c
Normal file
@ -0,0 +1,11 @@
|
||||
#include <stdint.h>
|
||||
|
||||
int64_t _2023_day1_part1(const char * input, int length)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
int64_t _2023_day1_part2(const char * input, int length)
|
||||
{
|
||||
return -1;
|
||||
}
|
15
2024/day1/input.txt.h
Normal file
15
2024/day1/input.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day1_input_txt_start __asm("_binary_2024_day1_input_txt_start");
|
||||
extern uint32_t _binary_2024_day1_input_txt_end __asm("_binary_2024_day1_input_txt_end");
|
||||
extern uint32_t _binary_2024_day1_input_txt_size __asm("_binary_2024_day1_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
15
2024/day1/sample1.txt.h
Normal file
15
2024/day1/sample1.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day1_sample1_txt_start __asm("_binary_2024_day1_sample1_txt_start");
|
||||
extern uint32_t _binary_2024_day1_sample1_txt_end __asm("_binary_2024_day1_sample1_txt_end");
|
||||
extern uint32_t _binary_2024_day1_sample1_txt_size __asm("_binary_2024_day1_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -25,7 +25,7 @@ static int parse_input(const char * input, int length, struct list * list)
|
||||
return i;
|
||||
}
|
||||
|
||||
int64_t day1_part1(const char * input, int length)
|
||||
int64_t _2024_day1_part1(const char * input, int length)
|
||||
{
|
||||
struct list list;
|
||||
int list_length = parse_input(input, length, &list);
|
||||
@ -42,7 +42,7 @@ int64_t day1_part1(const char * input, int length)
|
||||
return sum;
|
||||
}
|
||||
|
||||
int64_t day1_part2(const char * input, int length)
|
||||
int64_t _2024_day1_part2(const char * input, int length)
|
||||
{
|
||||
struct list list;
|
||||
int list_length = parse_input(input, length, &list);
|
15
2024/day10/input.txt.h
Normal file
15
2024/day10/input.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day10_input_txt_start __asm("_binary_2024_day10_input_txt_start");
|
||||
extern uint32_t _binary_2024_day10_input_txt_end __asm("_binary_2024_day10_input_txt_end");
|
||||
extern uint32_t _binary_2024_day10_input_txt_size __asm("_binary_2024_day10_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
15
2024/day10/sample1.txt.h
Normal file
15
2024/day10/sample1.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day10_sample1_txt_start __asm("_binary_2024_day10_sample1_txt_start");
|
||||
extern uint32_t _binary_2024_day10_sample1_txt_end __asm("_binary_2024_day10_sample1_txt_end");
|
||||
extern uint32_t _binary_2024_day10_sample1_txt_size __asm("_binary_2024_day10_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -87,7 +87,7 @@ struct rating_score find_trailheads(const char * input, int length,
|
||||
return (struct rating_score){total_rating, total_score};
|
||||
}
|
||||
|
||||
int64_t day10_part1(const char * input, int length)
|
||||
int64_t _2024_day10_part1(const char * input, int length)
|
||||
{
|
||||
int stride = parse_stride(input, length);
|
||||
int height = parse_height(input, length);
|
||||
@ -98,7 +98,7 @@ int64_t day10_part1(const char * input, int length)
|
||||
return rs.score;
|
||||
}
|
||||
|
||||
int64_t day10_part2(const char * input, int length)
|
||||
int64_t _2024_day10_part2(const char * input, int length)
|
||||
{
|
||||
int stride = parse_stride(input, length);
|
||||
int height = parse_height(input, length);
|
15
2024/day11/input.txt.h
Normal file
15
2024/day11/input.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day11_input_txt_start __asm("_binary_2024_day11_input_txt_start");
|
||||
extern uint32_t _binary_2024_day11_input_txt_end __asm("_binary_2024_day11_input_txt_end");
|
||||
extern uint32_t _binary_2024_day11_input_txt_size __asm("_binary_2024_day11_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
15
2024/day11/sample1.txt.h
Normal file
15
2024/day11/sample1.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day11_sample1_txt_start __asm("_binary_2024_day11_sample1_txt_start");
|
||||
extern uint32_t _binary_2024_day11_sample1_txt_end __asm("_binary_2024_day11_sample1_txt_end");
|
||||
extern uint32_t _binary_2024_day11_sample1_txt_size __asm("_binary_2024_day11_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -161,12 +161,12 @@ static int64_t solve(const char * input, int length, int max_depth)
|
||||
return sum;
|
||||
}
|
||||
|
||||
int64_t day11_part1(const char * input, int length)
|
||||
int64_t _2024_day11_part1(const char * input, int length)
|
||||
{
|
||||
return solve(input, length, 25);
|
||||
}
|
||||
|
||||
int64_t day11_part2(const char * input, int length)
|
||||
int64_t _2024_day11_part2(const char * input, int length)
|
||||
{
|
||||
return solve(input, length, 75);
|
||||
}
|
15
2024/day2/input.txt.h
Normal file
15
2024/day2/input.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day2_input_txt_start __asm("_binary_2024_day2_input_txt_start");
|
||||
extern uint32_t _binary_2024_day2_input_txt_end __asm("_binary_2024_day2_input_txt_end");
|
||||
extern uint32_t _binary_2024_day2_input_txt_size __asm("_binary_2024_day2_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
15
2024/day2/sample1.txt.h
Normal file
15
2024/day2/sample1.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day2_sample1_txt_start __asm("_binary_2024_day2_sample1_txt_start");
|
||||
extern uint32_t _binary_2024_day2_sample1_txt_end __asm("_binary_2024_day2_sample1_txt_end");
|
||||
extern uint32_t _binary_2024_day2_sample1_txt_size __asm("_binary_2024_day2_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -65,7 +65,7 @@ static bool report_safe(struct report * report, int skip)
|
||||
return true;
|
||||
}
|
||||
|
||||
int64_t day2_part1(const char * input, int length)
|
||||
int64_t _2024_day2_part1(const char * input, int length)
|
||||
{
|
||||
struct report report[1000];
|
||||
|
||||
@ -79,7 +79,7 @@ int64_t day2_part1(const char * input, int length)
|
||||
return sum;
|
||||
}
|
||||
|
||||
int64_t day2_part2(const char * input, int length)
|
||||
int64_t _2024_day2_part2(const char * input, int length)
|
||||
{
|
||||
struct report report[1000];
|
||||
|
15
2024/day3/input.txt.h
Normal file
15
2024/day3/input.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day3_input_txt_start __asm("_binary_2024_day3_input_txt_start");
|
||||
extern uint32_t _binary_2024_day3_input_txt_end __asm("_binary_2024_day3_input_txt_end");
|
||||
extern uint32_t _binary_2024_day3_input_txt_size __asm("_binary_2024_day3_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
15
2024/day3/sample1.txt.h
Normal file
15
2024/day3/sample1.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day3_sample1_txt_start __asm("_binary_2024_day3_sample1_txt_start");
|
||||
extern uint32_t _binary_2024_day3_sample1_txt_end __asm("_binary_2024_day3_sample1_txt_end");
|
||||
extern uint32_t _binary_2024_day3_sample1_txt_size __asm("_binary_2024_day3_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
15
2024/day3/sample2.txt.h
Normal file
15
2024/day3/sample2.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day3_sample2_txt_start __asm("_binary_2024_day3_sample2_txt_start");
|
||||
extern uint32_t _binary_2024_day3_sample2_txt_end __asm("_binary_2024_day3_sample2_txt_end");
|
||||
extern uint32_t _binary_2024_day3_sample2_txt_size __asm("_binary_2024_day3_sample2_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -89,7 +89,7 @@ int parse_input(const char * input, int length, struct instruction * ins)
|
||||
return i;
|
||||
}
|
||||
|
||||
int64_t day3_part1(const char * input, int length)
|
||||
int64_t _2024_day3_part1(const char * input, int length)
|
||||
{
|
||||
struct instruction ins[1000];
|
||||
|
||||
@ -104,7 +104,7 @@ int64_t day3_part1(const char * input, int length)
|
||||
return sum;
|
||||
}
|
||||
|
||||
int64_t day3_part2(const char * input, int length)
|
||||
int64_t _2024_day3_part2(const char * input, int length)
|
||||
{
|
||||
struct instruction ins[1000];
|
||||
|
15
2024/day4/input.txt.h
Normal file
15
2024/day4/input.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day4_input_txt_start __asm("_binary_2024_day4_input_txt_start");
|
||||
extern uint32_t _binary_2024_day4_input_txt_end __asm("_binary_2024_day4_input_txt_end");
|
||||
extern uint32_t _binary_2024_day4_input_txt_size __asm("_binary_2024_day4_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
15
2024/day4/sample1.txt.h
Normal file
15
2024/day4/sample1.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day4_sample1_txt_start __asm("_binary_2024_day4_sample1_txt_start");
|
||||
extern uint32_t _binary_2024_day4_sample1_txt_end __asm("_binary_2024_day4_sample1_txt_end");
|
||||
extern uint32_t _binary_2024_day4_sample1_txt_size __asm("_binary_2024_day4_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -121,7 +121,7 @@ static bool offset_match_cross(const char * input,
|
||||
return match1 || match2;
|
||||
}
|
||||
|
||||
int64_t day4_part1(const char * input, int length)
|
||||
int64_t _2024_day4_part1(const char * input, int length)
|
||||
{
|
||||
int stride = parse_stride(input, length);
|
||||
int height = parse_height(input, length);
|
||||
@ -149,7 +149,7 @@ int64_t day4_part1(const char * input, int length)
|
||||
return match_count;
|
||||
}
|
||||
|
||||
int64_t day4_part2(const char * input, int length)
|
||||
int64_t _2024_day4_part2(const char * input, int length)
|
||||
{
|
||||
int stride = parse_stride(input, length);
|
||||
int height = parse_height(input, length);
|
15
2024/day5/input.txt.h
Normal file
15
2024/day5/input.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day5_input_txt_start __asm("_binary_2024_day5_input_txt_start");
|
||||
extern uint32_t _binary_2024_day5_input_txt_end __asm("_binary_2024_day5_input_txt_end");
|
||||
extern uint32_t _binary_2024_day5_input_txt_size __asm("_binary_2024_day5_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
15
2024/day5/sample1.txt.h
Normal file
15
2024/day5/sample1.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day5_sample1_txt_start __asm("_binary_2024_day5_sample1_txt_start");
|
||||
extern uint32_t _binary_2024_day5_sample1_txt_end __asm("_binary_2024_day5_sample1_txt_end");
|
||||
extern uint32_t _binary_2024_day5_sample1_txt_size __asm("_binary_2024_day5_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -116,12 +116,12 @@ static int solve(const char * input, int length, bool correctly_ordered)
|
||||
return sum;
|
||||
}
|
||||
|
||||
int64_t day5_part1(const char * input, int length)
|
||||
int64_t _2024_day5_part1(const char * input, int length)
|
||||
{
|
||||
return solve(input, length, true);
|
||||
}
|
||||
|
||||
int64_t day5_part2(const char * input, int length)
|
||||
int64_t _2024_day5_part2(const char * input, int length)
|
||||
{
|
||||
return solve(input, length, false);
|
||||
}
|
15
2024/day6/input.txt.h
Normal file
15
2024/day6/input.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day6_input_txt_start __asm("_binary_2024_day6_input_txt_start");
|
||||
extern uint32_t _binary_2024_day6_input_txt_end __asm("_binary_2024_day6_input_txt_end");
|
||||
extern uint32_t _binary_2024_day6_input_txt_size __asm("_binary_2024_day6_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -152,9 +152,9 @@ void a_press()
|
||||
}
|
||||
|
||||
extern "C"
|
||||
void day6_render(const struct font * font,
|
||||
const struct glyph * glyphs,
|
||||
ft0::data_transfer::data_format * maple_ft0_data)
|
||||
void _2024_day6_render(const struct font * font,
|
||||
const struct glyph * glyphs,
|
||||
ft0::data_transfer::data_format * maple_ft0_data)
|
||||
{
|
||||
return;
|
||||
|
15
2024/day6/sample1.txt.h
Normal file
15
2024/day6/sample1.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day6_sample1_txt_start __asm("_binary_2024_day6_sample1_txt_start");
|
||||
extern uint32_t _binary_2024_day6_sample1_txt_end __asm("_binary_2024_day6_sample1_txt_end");
|
||||
extern uint32_t _binary_2024_day6_sample1_txt_size __asm("_binary_2024_day6_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -121,7 +121,7 @@ void state_init(int part,
|
||||
day6_state.guard[0] = guard;
|
||||
}
|
||||
|
||||
int64_t day6_part1(const char * input, int length)
|
||||
int64_t _2024_day6_part1(const char * input, int length)
|
||||
{
|
||||
int stride = parse_stride(input, length);
|
||||
int height = parse_height(input, length);
|
||||
@ -196,7 +196,7 @@ static bool speculative_obstacle_causes_loop(const char * input,
|
||||
return false;
|
||||
}
|
||||
|
||||
int64_t day6_part2(const char * input, int length)
|
||||
int64_t _2024_day6_part2(const char * input, int length)
|
||||
{
|
||||
int stride = parse_stride(input, length);
|
||||
int height = parse_height(input, length);
|
15
2024/day7/input.txt.h
Normal file
15
2024/day7/input.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day7_input_txt_start __asm("_binary_2024_day7_input_txt_start");
|
||||
extern uint32_t _binary_2024_day7_input_txt_end __asm("_binary_2024_day7_input_txt_end");
|
||||
extern uint32_t _binary_2024_day7_input_txt_size __asm("_binary_2024_day7_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
15
2024/day7/sample1.txt.h
Normal file
15
2024/day7/sample1.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day7_sample1_txt_start __asm("_binary_2024_day7_sample1_txt_start");
|
||||
extern uint32_t _binary_2024_day7_sample1_txt_end __asm("_binary_2024_day7_sample1_txt_end");
|
||||
extern uint32_t _binary_2024_day7_sample1_txt_size __asm("_binary_2024_day7_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -40,7 +40,7 @@ static bool evaluate_equation1(struct equation * equation, int64_t acc, int dept
|
||||
|| evaluate_equation1(equation, acc2, depth + 1);
|
||||
}
|
||||
|
||||
int64_t day7_part1(const char * input, int length)
|
||||
int64_t _2024_day7_part1(const char * input, int length)
|
||||
{
|
||||
const char * end = input + length;
|
||||
|
||||
@ -103,7 +103,7 @@ static bool evaluate_equation2(struct equation * equation, int64_t acc, int dept
|
||||
|| evaluate_equation2(equation, acc3, depth + 1);
|
||||
}
|
||||
|
||||
int64_t day7_part2(const char * input, int length)
|
||||
int64_t _2024_day7_part2(const char * input, int length)
|
||||
{
|
||||
const char * end = input + length;
|
||||
|
15
2024/day8/input.txt.h
Normal file
15
2024/day8/input.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day8_input_txt_start __asm("_binary_2024_day8_input_txt_start");
|
||||
extern uint32_t _binary_2024_day8_input_txt_end __asm("_binary_2024_day8_input_txt_end");
|
||||
extern uint32_t _binary_2024_day8_input_txt_size __asm("_binary_2024_day8_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
15
2024/day8/sample1.txt.h
Normal file
15
2024/day8/sample1.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day8_sample1_txt_start __asm("_binary_2024_day8_sample1_txt_start");
|
||||
extern uint32_t _binary_2024_day8_sample1_txt_end __asm("_binary_2024_day8_sample1_txt_end");
|
||||
extern uint32_t _binary_2024_day8_sample1_txt_size __asm("_binary_2024_day8_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -117,7 +117,7 @@ void find_antinodes(int width, int height,
|
||||
}
|
||||
}
|
||||
|
||||
int64_t day8_part1(const char * input, int length)
|
||||
int64_t _2024_day8_part1(const char * input, int length)
|
||||
{
|
||||
int stride = parse_stride(input, length);
|
||||
int height = parse_height(input, length);
|
||||
@ -137,7 +137,7 @@ int64_t day8_part1(const char * input, int length)
|
||||
return array_sum_char(antinodes, width * height);
|
||||
}
|
||||
|
||||
int64_t day8_part2(const char * input, int length)
|
||||
int64_t _2024_day8_part2(const char * input, int length)
|
||||
{
|
||||
int stride = parse_stride(input, length);
|
||||
int height = parse_height(input, length);
|
15
2024/day9/input.txt.h
Normal file
15
2024/day9/input.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day9_input_txt_start __asm("_binary_2024_day9_input_txt_start");
|
||||
extern uint32_t _binary_2024_day9_input_txt_end __asm("_binary_2024_day9_input_txt_end");
|
||||
extern uint32_t _binary_2024_day9_input_txt_size __asm("_binary_2024_day9_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
15
2024/day9/sample1.txt.h
Normal file
15
2024/day9/sample1.txt.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_2024_day9_sample1_txt_start __asm("_binary_2024_day9_sample1_txt_start");
|
||||
extern uint32_t _binary_2024_day9_sample1_txt_end __asm("_binary_2024_day9_sample1_txt_end");
|
||||
extern uint32_t _binary_2024_day9_sample1_txt_size __asm("_binary_2024_day9_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -159,7 +159,7 @@ static void print_blocks(int * blocks, int length)
|
||||
print_char('\n');
|
||||
}
|
||||
|
||||
int64_t day9_part1(const char * input, int length)
|
||||
int64_t _2024_day9_part1(const char * input, int length)
|
||||
{
|
||||
int blocks[length * 9];
|
||||
int ix = disk_map_to_blocks1(input, length, blocks);
|
||||
@ -167,7 +167,7 @@ int64_t day9_part1(const char * input, int length)
|
||||
return calculate_checksum(blocks, ix);
|
||||
}
|
||||
|
||||
int64_t day9_part2(const char * input, int length)
|
||||
int64_t _2024_day9_part2(const char * input, int length)
|
||||
{
|
||||
int blocks[length * 9];
|
||||
int ix = disk_map_to_blocks2(input, length, blocks);
|
8
Makefile
8
Makefile
@ -12,4 +12,12 @@ CFLAGS += -I$(MAKEFILE_PATH)/dreamcast/
|
||||
CFLAGS += -Wno-char-subscripts
|
||||
LIB ?= $(MAKEFILE_PATH)/dreamcast
|
||||
|
||||
libgcc/%.o: $(LIBGCC)
|
||||
ar x --output $(dir $@) $(LIBGCC) $(notdir $@)
|
||||
sh4-none-elf-objdump -t $@ \
|
||||
| grep -E '[.]hidden' \
|
||||
| grep -vE 'UND' \
|
||||
| cut -d' ' -f10 \
|
||||
| xargs rebind --visibility=default $@
|
||||
|
||||
include aoc.mk
|
||||
|
10
aoc.mk
10
aoc.mk
@ -19,11 +19,11 @@ DREAMCAST_OBJ = \
|
||||
$(LIB)/holly/video_output.o \
|
||||
$(LIB)/font/dejavusansmono/dejavusansmono.data.o \
|
||||
$(LIB)/sh7091/serial.o \
|
||||
$(LIB)/maple/maple.o
|
||||
# libgcc/_divdi3.o \
|
||||
# libgcc/_moddi3.o \
|
||||
# libgcc/_udiv_qrnnd_16.o \
|
||||
# libgcc/_clz.o
|
||||
$(LIB)/maple/maple.o \
|
||||
libgcc/_divdi3.o \
|
||||
libgcc/_moddi3.o \
|
||||
libgcc/_udiv_qrnnd_16.o \
|
||||
libgcc/_clz.o
|
||||
|
||||
include solutions.mk
|
||||
|
||||
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day1_input_txt_start __asm("_binary_day1_input_txt_start");
|
||||
extern uint32_t _binary_day1_input_txt_end __asm("_binary_day1_input_txt_end");
|
||||
extern uint32_t _binary_day1_input_txt_size __asm("_binary_day1_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day1_sample1_txt_start __asm("_binary_day1_sample1_txt_start");
|
||||
extern uint32_t _binary_day1_sample1_txt_end __asm("_binary_day1_sample1_txt_end");
|
||||
extern uint32_t _binary_day1_sample1_txt_size __asm("_binary_day1_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day10_input_txt_start __asm("_binary_day10_input_txt_start");
|
||||
extern uint32_t _binary_day10_input_txt_end __asm("_binary_day10_input_txt_end");
|
||||
extern uint32_t _binary_day10_input_txt_size __asm("_binary_day10_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day10_sample1_txt_start __asm("_binary_day10_sample1_txt_start");
|
||||
extern uint32_t _binary_day10_sample1_txt_end __asm("_binary_day10_sample1_txt_end");
|
||||
extern uint32_t _binary_day10_sample1_txt_size __asm("_binary_day10_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day11_input_txt_start __asm("_binary_day11_input_txt_start");
|
||||
extern uint32_t _binary_day11_input_txt_end __asm("_binary_day11_input_txt_end");
|
||||
extern uint32_t _binary_day11_input_txt_size __asm("_binary_day11_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day11_sample1_txt_start __asm("_binary_day11_sample1_txt_start");
|
||||
extern uint32_t _binary_day11_sample1_txt_end __asm("_binary_day11_sample1_txt_end");
|
||||
extern uint32_t _binary_day11_sample1_txt_size __asm("_binary_day11_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day2_input_txt_start __asm("_binary_day2_input_txt_start");
|
||||
extern uint32_t _binary_day2_input_txt_end __asm("_binary_day2_input_txt_end");
|
||||
extern uint32_t _binary_day2_input_txt_size __asm("_binary_day2_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day2_sample1_txt_start __asm("_binary_day2_sample1_txt_start");
|
||||
extern uint32_t _binary_day2_sample1_txt_end __asm("_binary_day2_sample1_txt_end");
|
||||
extern uint32_t _binary_day2_sample1_txt_size __asm("_binary_day2_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day3_input_txt_start __asm("_binary_day3_input_txt_start");
|
||||
extern uint32_t _binary_day3_input_txt_end __asm("_binary_day3_input_txt_end");
|
||||
extern uint32_t _binary_day3_input_txt_size __asm("_binary_day3_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day3_sample1_txt_start __asm("_binary_day3_sample1_txt_start");
|
||||
extern uint32_t _binary_day3_sample1_txt_end __asm("_binary_day3_sample1_txt_end");
|
||||
extern uint32_t _binary_day3_sample1_txt_size __asm("_binary_day3_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day3_sample2_txt_start __asm("_binary_day3_sample2_txt_start");
|
||||
extern uint32_t _binary_day3_sample2_txt_end __asm("_binary_day3_sample2_txt_end");
|
||||
extern uint32_t _binary_day3_sample2_txt_size __asm("_binary_day3_sample2_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day4_input_txt_start __asm("_binary_day4_input_txt_start");
|
||||
extern uint32_t _binary_day4_input_txt_end __asm("_binary_day4_input_txt_end");
|
||||
extern uint32_t _binary_day4_input_txt_size __asm("_binary_day4_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day4_sample1_txt_start __asm("_binary_day4_sample1_txt_start");
|
||||
extern uint32_t _binary_day4_sample1_txt_end __asm("_binary_day4_sample1_txt_end");
|
||||
extern uint32_t _binary_day4_sample1_txt_size __asm("_binary_day4_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day5_input_txt_start __asm("_binary_day5_input_txt_start");
|
||||
extern uint32_t _binary_day5_input_txt_end __asm("_binary_day5_input_txt_end");
|
||||
extern uint32_t _binary_day5_input_txt_size __asm("_binary_day5_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day5_sample1_txt_start __asm("_binary_day5_sample1_txt_start");
|
||||
extern uint32_t _binary_day5_sample1_txt_end __asm("_binary_day5_sample1_txt_end");
|
||||
extern uint32_t _binary_day5_sample1_txt_size __asm("_binary_day5_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day6_input_txt_start __asm("_binary_day6_input_txt_start");
|
||||
extern uint32_t _binary_day6_input_txt_end __asm("_binary_day6_input_txt_end");
|
||||
extern uint32_t _binary_day6_input_txt_size __asm("_binary_day6_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day6_sample1_txt_start __asm("_binary_day6_sample1_txt_start");
|
||||
extern uint32_t _binary_day6_sample1_txt_end __asm("_binary_day6_sample1_txt_end");
|
||||
extern uint32_t _binary_day6_sample1_txt_size __asm("_binary_day6_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day7_input_txt_start __asm("_binary_day7_input_txt_start");
|
||||
extern uint32_t _binary_day7_input_txt_end __asm("_binary_day7_input_txt_end");
|
||||
extern uint32_t _binary_day7_input_txt_size __asm("_binary_day7_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day7_sample1_txt_start __asm("_binary_day7_sample1_txt_start");
|
||||
extern uint32_t _binary_day7_sample1_txt_end __asm("_binary_day7_sample1_txt_end");
|
||||
extern uint32_t _binary_day7_sample1_txt_size __asm("_binary_day7_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day8_input_txt_start __asm("_binary_day8_input_txt_start");
|
||||
extern uint32_t _binary_day8_input_txt_end __asm("_binary_day8_input_txt_end");
|
||||
extern uint32_t _binary_day8_input_txt_size __asm("_binary_day8_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day8_sample1_txt_start __asm("_binary_day8_sample1_txt_start");
|
||||
extern uint32_t _binary_day8_sample1_txt_end __asm("_binary_day8_sample1_txt_end");
|
||||
extern uint32_t _binary_day8_sample1_txt_size __asm("_binary_day8_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day9_input_txt_start __asm("_binary_day9_input_txt_start");
|
||||
extern uint32_t _binary_day9_input_txt_end __asm("_binary_day9_input_txt_end");
|
||||
extern uint32_t _binary_day9_input_txt_size __asm("_binary_day9_input_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern uint32_t _binary_day9_sample1_txt_start __asm("_binary_day9_sample1_txt_start");
|
||||
extern uint32_t _binary_day9_sample1_txt_end __asm("_binary_day9_sample1_txt_end");
|
||||
extern uint32_t _binary_day9_sample1_txt_size __asm("_binary_day9_sample1_txt_size");
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
122
gen.sh
122
gen.sh
@ -2,87 +2,100 @@
|
||||
|
||||
set -ex
|
||||
|
||||
day="$1"
|
||||
year="$1"
|
||||
day="$2"
|
||||
|
||||
if [ ! -z "$day" ]; then
|
||||
if [ ! -z $year && ! -z "$year/$day" ]; then
|
||||
re='^[0-9]+$'
|
||||
if ! [[ $year =~ $re ]] ; then
|
||||
echo "error: $year: not a number" >&2
|
||||
exit 1
|
||||
fi
|
||||
if ! [[ $day =~ $re ]] ; then
|
||||
echo "error: $day: not a number" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p day${day}
|
||||
cat <<EOF > day${day}/solution.c
|
||||
mkdir -p ${year}/day${day}
|
||||
cat <<EOF > ${year}/day${day}/solution.c
|
||||
#include <stdint.h>
|
||||
|
||||
int64_t day${day}_part1(const char * input, int length)
|
||||
int64_t ${year}_day${day}_part1(const char * input, int length)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
int64_t day${day}_part2(const char * input, int length)
|
||||
int64_t ${year}_day${day}_part2(const char * input, int length)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
EOF
|
||||
|
||||
if [ ! -f day${day}/sample1.txt ]; then
|
||||
touch day${day}/sample1.txt
|
||||
if [ ! -f ${year}/day${day}/sample1.txt ]; then
|
||||
touch ${year}/day${day}/sample1.txt
|
||||
fi
|
||||
|
||||
if [ ! -f day${day}/input.txt ]; then
|
||||
touch day${day}/input.txt
|
||||
if [ ! -f ${year}/day${day}/input.txt ]; then
|
||||
touch ${year}/day${day}/input.txt
|
||||
fi
|
||||
fi
|
||||
|
||||
function gen_start_size ()
|
||||
function binary_header_include ()
|
||||
{
|
||||
echo "$1 { ( char *)&_binary_${2}_${3}_txt_start," >> input_dreamcast.inc
|
||||
echo "$1 (uint32_t)&_binary_${2}_${3}_txt_size }," >> input_dreamcast.inc
|
||||
echo "#include \"${1}/sample1.txt.h\"" >> input_dreamcast.inc
|
||||
if [ -f ${i}/sample2.txt ]; then
|
||||
echo "#include \"${1}/sample2.txt.h\"" >> input_dreamcast.inc
|
||||
fi
|
||||
echo "#include \"${1}/input.txt.h\"" >> input_dreamcast.inc
|
||||
}
|
||||
|
||||
function gen_start_size ()
|
||||
{
|
||||
local name=${2//\//_}
|
||||
echo "$1 { ( char *)&_binary_${name}_${3}_txt_start," >> input_dreamcast.inc
|
||||
echo "$1 (uint32_t)&_binary_${name}_${3}_txt_size }," >> input_dreamcast.inc
|
||||
}
|
||||
|
||||
for i in day? day?? ; do
|
||||
function sample ()
|
||||
{
|
||||
echo " {" >> input_dreamcast.inc
|
||||
gen_start_size " " "${1}" "sample1"
|
||||
if [ ! -f ${i}/sample2.txt ]; then
|
||||
gen_start_size " " "${1}" "sample1"
|
||||
else
|
||||
gen_start_size " " "${1}" "sample2"
|
||||
fi
|
||||
echo " }," >> input_dreamcast.inc
|
||||
}
|
||||
|
||||
for i in ????/day? ????/day?? ; do
|
||||
make ${i}/sample1.txt.h ${i}/input.txt.h
|
||||
if [ -f ${i}/sample2.txt ]; then
|
||||
make ${i}/sample2.txt.h
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
truncate -s0 input_dreamcast.inc
|
||||
|
||||
for i in day? day?? ; do
|
||||
echo "#include \"${i}/sample1.txt.h\"" >> input_dreamcast.inc
|
||||
if [ -f ${i}/sample2.txt ]; then
|
||||
echo "#include \"${i}/sample2.txt.h\"" >> input_dreamcast.inc
|
||||
fi
|
||||
echo "#include \"${i}/input.txt.h\"" >> input_dreamcast.inc
|
||||
for i in ????/day? ????/day?? ; do
|
||||
binary_header_include ${i}
|
||||
done
|
||||
echo >> input_dreamcast.inc
|
||||
echo "static struct start_size sample[][2] = {" >> input_dreamcast.inc
|
||||
for i in day? day?? ; do
|
||||
echo " {" >> input_dreamcast.inc
|
||||
gen_start_size " " "${i}" "sample1"
|
||||
if [ ! -f ${i}/sample2.txt ]; then
|
||||
gen_start_size " " "${i}" "sample1"
|
||||
else
|
||||
gen_start_size " " "${i}" "sample2"
|
||||
fi
|
||||
echo " }," >> input_dreamcast.inc
|
||||
for i in ????/day? ????/day?? ; do
|
||||
sample ${i}
|
||||
done
|
||||
echo "};" >> input_dreamcast.inc
|
||||
echo >> input_dreamcast.inc
|
||||
echo "static struct start_size input[] = {" >> input_dreamcast.inc
|
||||
for i in day? day?? ; do
|
||||
for i in ????/day? ????/day?? ; do
|
||||
gen_start_size "" "${i}" "input"
|
||||
done
|
||||
echo "};" >> input_dreamcast.inc
|
||||
|
||||
|
||||
truncate -s0 solutions.mk
|
||||
echo -n "DAY_OBJ =" >> solutions.mk
|
||||
for i in day? day?? ; do
|
||||
for i in ????/day? ????/day?? ; do
|
||||
echo " \\" >> solutions.mk
|
||||
echo " ${i}/sample1.txt.o \\" >> solutions.mk
|
||||
if [ -f ${i}/sample2.txt ]; then
|
||||
@ -96,26 +109,41 @@ for i in day? day?? ; do
|
||||
done
|
||||
echo >> solutions.mk
|
||||
|
||||
truncate -s0 runner.inc
|
||||
for i in day? day?? ; do
|
||||
echo "int64_t ${i}_part1(const char * input, int length);" >> runner.inc
|
||||
echo "int64_t ${i}_part2(const char * input, int length);" >> runner.inc
|
||||
if [ -f ${i}/render.cpp ]; then
|
||||
echo "void ${i}_render(const struct font * font," >> runner.inc
|
||||
echo " const struct glyph * glyphs," >> runner.inc
|
||||
echo " const void * maple_ft0_data);" >> runner.inc
|
||||
function part_declaration ()
|
||||
{
|
||||
local name=${1//\//_}
|
||||
echo "int64_t _${name}_part1(const char * input, int length);" >> runner.inc
|
||||
echo "int64_t _${name}_part2(const char * input, int length);" >> runner.inc
|
||||
if [ -f ${1}/render.cpp ]; then
|
||||
echo "void _${name}_render(const struct font * font," >> runner.inc
|
||||
echo " const struct glyph * glyphs," >> runner.inc
|
||||
echo " const void * maple_ft0_data);" >> runner.inc
|
||||
fi
|
||||
done
|
||||
echo >> runner.inc
|
||||
echo "struct day_funcs solution[] = {" >> runner.inc
|
||||
for i in day? day?? ; do
|
||||
}
|
||||
|
||||
function solution_array_content ()
|
||||
{
|
||||
local name=${1//\//_}
|
||||
regex='([0-9]+)/day([0-9]+)'
|
||||
[[ $1 =~ $regex ]]
|
||||
echo " {" >> runner.inc
|
||||
echo " {${i}_part1, ${i}_part2}," >> runner.inc
|
||||
echo " ${BASH_REMATCH[1]}, ${BASH_REMATCH[2]}," >> runner.inc
|
||||
echo " {_${name}_part1, _${name}_part2}," >> runner.inc
|
||||
if [ -f ${i}/render.cpp ]; then
|
||||
echo " ${i}_render," >> runner.inc
|
||||
echo " _${name}_render," >> runner.inc
|
||||
else
|
||||
echo " NULL," >> runner.inc
|
||||
fi
|
||||
echo " }," >> runner.inc
|
||||
}
|
||||
|
||||
truncate -s0 runner.inc
|
||||
for i in ????/day? ????/day?? ; do
|
||||
part_declaration ${i}
|
||||
done
|
||||
echo >> runner.inc
|
||||
echo "struct day_funcs solution[] = {" >> runner.inc
|
||||
for i in ????/day? ????/day?? ; do
|
||||
solution_array_content ${i}
|
||||
done
|
||||
echo "};" >> runner.inc
|
||||
|
4
input.h
4
input.h
@ -4,8 +4,8 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void open_input(int day, char ** buf, int * length);
|
||||
void open_sample(int day, int part, char ** buf, int * length);
|
||||
void open_input(int ix, char ** buf, int * length);
|
||||
void open_sample(int ix, int part, char ** buf, int * length);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -12,24 +12,24 @@ struct start_size {
|
||||
|
||||
const int input_size = (sizeof (input)) / (sizeof (input[0]));
|
||||
|
||||
void open_input(int day, char ** buf, int * length)
|
||||
void open_input(int ix, char ** buf, int * length)
|
||||
{
|
||||
if (day < 1 || day > input_size) {
|
||||
if (ix < 0 || ix >= input_size) {
|
||||
*buf = NULL;
|
||||
*length = 0;
|
||||
} else {
|
||||
*buf = input[day - 1].start;
|
||||
*length = input[day - 1].size;
|
||||
*buf = input[ix].start;
|
||||
*length = input[ix].size;
|
||||
}
|
||||
}
|
||||
|
||||
void open_sample(int day, int part, char ** buf, int * length)
|
||||
void open_sample(int ix, int part, char ** buf, int * length)
|
||||
{
|
||||
if (day < 1 || day > input_size || part < 1 || part > 2) {
|
||||
if (ix < 1 || ix > input_size || part < 0 || part > 1) {
|
||||
*buf = NULL;
|
||||
*length = 0;
|
||||
} else {
|
||||
*buf = sample[day - 1][part - 1].start;
|
||||
*length = sample[day - 1][part - 1].size;
|
||||
*buf = sample[ix][part].start;
|
||||
*length = sample[ix][part].size;
|
||||
}
|
||||
}
|
||||
|
@ -1,117 +1,128 @@
|
||||
#include "day1/sample1.txt.h"
|
||||
#include "day1/input.txt.h"
|
||||
#include "day2/sample1.txt.h"
|
||||
#include "day2/input.txt.h"
|
||||
#include "day3/sample1.txt.h"
|
||||
#include "day3/sample2.txt.h"
|
||||
#include "day3/input.txt.h"
|
||||
#include "day4/sample1.txt.h"
|
||||
#include "day4/input.txt.h"
|
||||
#include "day5/sample1.txt.h"
|
||||
#include "day5/input.txt.h"
|
||||
#include "day6/sample1.txt.h"
|
||||
#include "day6/input.txt.h"
|
||||
#include "day7/sample1.txt.h"
|
||||
#include "day7/input.txt.h"
|
||||
#include "day8/sample1.txt.h"
|
||||
#include "day8/input.txt.h"
|
||||
#include "day9/sample1.txt.h"
|
||||
#include "day9/input.txt.h"
|
||||
#include "day10/sample1.txt.h"
|
||||
#include "day10/input.txt.h"
|
||||
#include "day11/sample1.txt.h"
|
||||
#include "day11/input.txt.h"
|
||||
#include "2023/day1/sample1.txt.h"
|
||||
#include "2023/day1/sample2.txt.h"
|
||||
#include "2023/day1/input.txt.h"
|
||||
#include "2024/day1/sample1.txt.h"
|
||||
#include "2024/day1/input.txt.h"
|
||||
#include "2024/day2/sample1.txt.h"
|
||||
#include "2024/day2/input.txt.h"
|
||||
#include "2024/day3/sample1.txt.h"
|
||||
#include "2024/day3/sample2.txt.h"
|
||||
#include "2024/day3/input.txt.h"
|
||||
#include "2024/day4/sample1.txt.h"
|
||||
#include "2024/day4/input.txt.h"
|
||||
#include "2024/day5/sample1.txt.h"
|
||||
#include "2024/day5/input.txt.h"
|
||||
#include "2024/day6/sample1.txt.h"
|
||||
#include "2024/day6/input.txt.h"
|
||||
#include "2024/day7/sample1.txt.h"
|
||||
#include "2024/day7/input.txt.h"
|
||||
#include "2024/day8/sample1.txt.h"
|
||||
#include "2024/day8/input.txt.h"
|
||||
#include "2024/day9/sample1.txt.h"
|
||||
#include "2024/day9/input.txt.h"
|
||||
#include "2024/day10/sample1.txt.h"
|
||||
#include "2024/day10/input.txt.h"
|
||||
#include "2024/day11/sample1.txt.h"
|
||||
#include "2024/day11/input.txt.h"
|
||||
|
||||
static struct start_size sample[][2] = {
|
||||
{
|
||||
{ ( char *)&_binary_day1_sample1_txt_start,
|
||||
(uint32_t)&_binary_day1_sample1_txt_size },
|
||||
{ ( char *)&_binary_day1_sample1_txt_start,
|
||||
(uint32_t)&_binary_day1_sample1_txt_size },
|
||||
{ ( char *)&_binary_2023_day1_sample1_txt_start,
|
||||
(uint32_t)&_binary_2023_day1_sample1_txt_size },
|
||||
{ ( char *)&_binary_2023_day1_sample2_txt_start,
|
||||
(uint32_t)&_binary_2023_day1_sample2_txt_size },
|
||||
},
|
||||
{
|
||||
{ ( char *)&_binary_day2_sample1_txt_start,
|
||||
(uint32_t)&_binary_day2_sample1_txt_size },
|
||||
{ ( char *)&_binary_day2_sample1_txt_start,
|
||||
(uint32_t)&_binary_day2_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day1_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day1_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day1_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day1_sample1_txt_size },
|
||||
},
|
||||
{
|
||||
{ ( char *)&_binary_day3_sample1_txt_start,
|
||||
(uint32_t)&_binary_day3_sample1_txt_size },
|
||||
{ ( char *)&_binary_day3_sample2_txt_start,
|
||||
(uint32_t)&_binary_day3_sample2_txt_size },
|
||||
{ ( char *)&_binary_2024_day2_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day2_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day2_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day2_sample1_txt_size },
|
||||
},
|
||||
{
|
||||
{ ( char *)&_binary_day4_sample1_txt_start,
|
||||
(uint32_t)&_binary_day4_sample1_txt_size },
|
||||
{ ( char *)&_binary_day4_sample1_txt_start,
|
||||
(uint32_t)&_binary_day4_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day3_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day3_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day3_sample2_txt_start,
|
||||
(uint32_t)&_binary_2024_day3_sample2_txt_size },
|
||||
},
|
||||
{
|
||||
{ ( char *)&_binary_day5_sample1_txt_start,
|
||||
(uint32_t)&_binary_day5_sample1_txt_size },
|
||||
{ ( char *)&_binary_day5_sample1_txt_start,
|
||||
(uint32_t)&_binary_day5_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day4_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day4_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day4_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day4_sample1_txt_size },
|
||||
},
|
||||
{
|
||||
{ ( char *)&_binary_day6_sample1_txt_start,
|
||||
(uint32_t)&_binary_day6_sample1_txt_size },
|
||||
{ ( char *)&_binary_day6_sample1_txt_start,
|
||||
(uint32_t)&_binary_day6_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day5_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day5_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day5_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day5_sample1_txt_size },
|
||||
},
|
||||
{
|
||||
{ ( char *)&_binary_day7_sample1_txt_start,
|
||||
(uint32_t)&_binary_day7_sample1_txt_size },
|
||||
{ ( char *)&_binary_day7_sample1_txt_start,
|
||||
(uint32_t)&_binary_day7_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day6_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day6_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day6_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day6_sample1_txt_size },
|
||||
},
|
||||
{
|
||||
{ ( char *)&_binary_day8_sample1_txt_start,
|
||||
(uint32_t)&_binary_day8_sample1_txt_size },
|
||||
{ ( char *)&_binary_day8_sample1_txt_start,
|
||||
(uint32_t)&_binary_day8_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day7_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day7_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day7_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day7_sample1_txt_size },
|
||||
},
|
||||
{
|
||||
{ ( char *)&_binary_day9_sample1_txt_start,
|
||||
(uint32_t)&_binary_day9_sample1_txt_size },
|
||||
{ ( char *)&_binary_day9_sample1_txt_start,
|
||||
(uint32_t)&_binary_day9_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day8_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day8_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day8_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day8_sample1_txt_size },
|
||||
},
|
||||
{
|
||||
{ ( char *)&_binary_day10_sample1_txt_start,
|
||||
(uint32_t)&_binary_day10_sample1_txt_size },
|
||||
{ ( char *)&_binary_day10_sample1_txt_start,
|
||||
(uint32_t)&_binary_day10_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day9_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day9_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day9_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day9_sample1_txt_size },
|
||||
},
|
||||
{
|
||||
{ ( char *)&_binary_day11_sample1_txt_start,
|
||||
(uint32_t)&_binary_day11_sample1_txt_size },
|
||||
{ ( char *)&_binary_day11_sample1_txt_start,
|
||||
(uint32_t)&_binary_day11_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day10_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day10_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day10_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day10_sample1_txt_size },
|
||||
},
|
||||
{
|
||||
{ ( char *)&_binary_2024_day11_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day11_sample1_txt_size },
|
||||
{ ( char *)&_binary_2024_day11_sample1_txt_start,
|
||||
(uint32_t)&_binary_2024_day11_sample1_txt_size },
|
||||
},
|
||||
};
|
||||
|
||||
static struct start_size input[] = {
|
||||
{ ( char *)&_binary_day1_input_txt_start,
|
||||
(uint32_t)&_binary_day1_input_txt_size },
|
||||
{ ( char *)&_binary_day2_input_txt_start,
|
||||
(uint32_t)&_binary_day2_input_txt_size },
|
||||
{ ( char *)&_binary_day3_input_txt_start,
|
||||
(uint32_t)&_binary_day3_input_txt_size },
|
||||
{ ( char *)&_binary_day4_input_txt_start,
|
||||
(uint32_t)&_binary_day4_input_txt_size },
|
||||
{ ( char *)&_binary_day5_input_txt_start,
|
||||
(uint32_t)&_binary_day5_input_txt_size },
|
||||
{ ( char *)&_binary_day6_input_txt_start,
|
||||
(uint32_t)&_binary_day6_input_txt_size },
|
||||
{ ( char *)&_binary_day7_input_txt_start,
|
||||
(uint32_t)&_binary_day7_input_txt_size },
|
||||
{ ( char *)&_binary_day8_input_txt_start,
|
||||
(uint32_t)&_binary_day8_input_txt_size },
|
||||
{ ( char *)&_binary_day9_input_txt_start,
|
||||
(uint32_t)&_binary_day9_input_txt_size },
|
||||
{ ( char *)&_binary_day10_input_txt_start,
|
||||
(uint32_t)&_binary_day10_input_txt_size },
|
||||
{ ( char *)&_binary_day11_input_txt_start,
|
||||
(uint32_t)&_binary_day11_input_txt_size },
|
||||
{ ( char *)&_binary_2023_day1_input_txt_start,
|
||||
(uint32_t)&_binary_2023_day1_input_txt_size },
|
||||
{ ( char *)&_binary_2024_day1_input_txt_start,
|
||||
(uint32_t)&_binary_2024_day1_input_txt_size },
|
||||
{ ( char *)&_binary_2024_day2_input_txt_start,
|
||||
(uint32_t)&_binary_2024_day2_input_txt_size },
|
||||
{ ( char *)&_binary_2024_day3_input_txt_start,
|
||||
(uint32_t)&_binary_2024_day3_input_txt_size },
|
||||
{ ( char *)&_binary_2024_day4_input_txt_start,
|
||||
(uint32_t)&_binary_2024_day4_input_txt_size },
|
||||
{ ( char *)&_binary_2024_day5_input_txt_start,
|
||||
(uint32_t)&_binary_2024_day5_input_txt_size },
|
||||
{ ( char *)&_binary_2024_day6_input_txt_start,
|
||||
(uint32_t)&_binary_2024_day6_input_txt_size },
|
||||
{ ( char *)&_binary_2024_day7_input_txt_start,
|
||||
(uint32_t)&_binary_2024_day7_input_txt_size },
|
||||
{ ( char *)&_binary_2024_day8_input_txt_start,
|
||||
(uint32_t)&_binary_2024_day8_input_txt_size },
|
||||
{ ( char *)&_binary_2024_day9_input_txt_start,
|
||||
(uint32_t)&_binary_2024_day9_input_txt_size },
|
||||
{ ( char *)&_binary_2024_day10_input_txt_start,
|
||||
(uint32_t)&_binary_2024_day10_input_txt_size },
|
||||
{ ( char *)&_binary_2024_day11_input_txt_start,
|
||||
(uint32_t)&_binary_2024_day11_input_txt_size },
|
||||
};
|
||||
|
18
runner.c
18
runner.c
@ -12,6 +12,8 @@ typedef void (* render_func)(const struct font * font,
|
||||
const void * maple_ft0_data);
|
||||
|
||||
struct day_funcs {
|
||||
int year;
|
||||
int day;
|
||||
part_func part[2];
|
||||
render_func render;
|
||||
};
|
||||
@ -23,6 +25,7 @@ const int solution_ticks = solution_days * 2;
|
||||
bool runner_tick(struct runner_state * runner_state)
|
||||
{
|
||||
int tick = (solution_ticks - 1) - runner_state->tick;
|
||||
//int tick = runner_state->tick;
|
||||
|
||||
if (tick < 0) {
|
||||
runner_state->want_render = false;
|
||||
@ -30,20 +33,19 @@ bool runner_tick(struct runner_state * runner_state)
|
||||
}
|
||||
|
||||
int part = tick % 2;
|
||||
int day = tick / 2;
|
||||
int ix = tick / 2;
|
||||
int year = solution[ix].year;
|
||||
int day = solution[ix].day;
|
||||
|
||||
if (day < 10)
|
||||
return true;
|
||||
|
||||
runner_state->want_render = solution[day].render != NULL;
|
||||
runner_state->want_render = solution[ix].render != NULL;
|
||||
|
||||
char * buf;
|
||||
int length;
|
||||
//open_sample(day + 1, part + 1, &buf, &length);
|
||||
open_input(day + 1, &buf, &length);
|
||||
open_sample(ix, part, &buf, &length);
|
||||
//open_input(ix, &buf, &length);
|
||||
int64_t answer = solution[day].part[part](buf, length);
|
||||
|
||||
printf("day %d part %d: %l\n", day + 1, part + 1, answer);
|
||||
printf("%d day %d part %d: %l\n", year, day, part + 1, answer);
|
||||
|
||||
runner_state->tick += 1;
|
||||
|
||||
|
96
runner.inc
96
runner.inc
@ -1,72 +1,90 @@
|
||||
int64_t day1_part1(const char * input, int length);
|
||||
int64_t day1_part2(const char * input, int length);
|
||||
int64_t day2_part1(const char * input, int length);
|
||||
int64_t day2_part2(const char * input, int length);
|
||||
int64_t day3_part1(const char * input, int length);
|
||||
int64_t day3_part2(const char * input, int length);
|
||||
int64_t day4_part1(const char * input, int length);
|
||||
int64_t day4_part2(const char * input, int length);
|
||||
int64_t day5_part1(const char * input, int length);
|
||||
int64_t day5_part2(const char * input, int length);
|
||||
int64_t day6_part1(const char * input, int length);
|
||||
int64_t day6_part2(const char * input, int length);
|
||||
void day6_render(const struct font * font,
|
||||
const struct glyph * glyphs,
|
||||
const void * maple_ft0_data);
|
||||
int64_t day7_part1(const char * input, int length);
|
||||
int64_t day7_part2(const char * input, int length);
|
||||
int64_t day8_part1(const char * input, int length);
|
||||
int64_t day8_part2(const char * input, int length);
|
||||
int64_t day9_part1(const char * input, int length);
|
||||
int64_t day9_part2(const char * input, int length);
|
||||
int64_t day10_part1(const char * input, int length);
|
||||
int64_t day10_part2(const char * input, int length);
|
||||
int64_t day11_part1(const char * input, int length);
|
||||
int64_t day11_part2(const char * input, int length);
|
||||
int64_t _2023_day1_part1(const char * input, int length);
|
||||
int64_t _2023_day1_part2(const char * input, int length);
|
||||
int64_t _2024_day1_part1(const char * input, int length);
|
||||
int64_t _2024_day1_part2(const char * input, int length);
|
||||
int64_t _2024_day2_part1(const char * input, int length);
|
||||
int64_t _2024_day2_part2(const char * input, int length);
|
||||
int64_t _2024_day3_part1(const char * input, int length);
|
||||
int64_t _2024_day3_part2(const char * input, int length);
|
||||
int64_t _2024_day4_part1(const char * input, int length);
|
||||
int64_t _2024_day4_part2(const char * input, int length);
|
||||
int64_t _2024_day5_part1(const char * input, int length);
|
||||
int64_t _2024_day5_part2(const char * input, int length);
|
||||
int64_t _2024_day6_part1(const char * input, int length);
|
||||
int64_t _2024_day6_part2(const char * input, int length);
|
||||
void _2024_day6_render(const struct font * font,
|
||||
const struct glyph * glyphs,
|
||||
const void * maple_ft0_data);
|
||||
int64_t _2024_day7_part1(const char * input, int length);
|
||||
int64_t _2024_day7_part2(const char * input, int length);
|
||||
int64_t _2024_day8_part1(const char * input, int length);
|
||||
int64_t _2024_day8_part2(const char * input, int length);
|
||||
int64_t _2024_day9_part1(const char * input, int length);
|
||||
int64_t _2024_day9_part2(const char * input, int length);
|
||||
int64_t _2024_day10_part1(const char * input, int length);
|
||||
int64_t _2024_day10_part2(const char * input, int length);
|
||||
int64_t _2024_day11_part1(const char * input, int length);
|
||||
int64_t _2024_day11_part2(const char * input, int length);
|
||||
|
||||
struct day_funcs solution[] = {
|
||||
{
|
||||
{day1_part1, day1_part2},
|
||||
2023, 1,
|
||||
{_2023_day1_part1, _2023_day1_part2},
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
{day2_part1, day2_part2},
|
||||
2024, 1,
|
||||
{_2024_day1_part1, _2024_day1_part2},
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
{day3_part1, day3_part2},
|
||||
2024, 2,
|
||||
{_2024_day2_part1, _2024_day2_part2},
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
{day4_part1, day4_part2},
|
||||
2024, 3,
|
||||
{_2024_day3_part1, _2024_day3_part2},
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
{day5_part1, day5_part2},
|
||||
2024, 4,
|
||||
{_2024_day4_part1, _2024_day4_part2},
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
{day6_part1, day6_part2},
|
||||
day6_render,
|
||||
},
|
||||
{
|
||||
{day7_part1, day7_part2},
|
||||
2024, 5,
|
||||
{_2024_day5_part1, _2024_day5_part2},
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
{day8_part1, day8_part2},
|
||||
2024, 6,
|
||||
{_2024_day6_part1, _2024_day6_part2},
|
||||
_2024_day6_render,
|
||||
},
|
||||
{
|
||||
2024, 7,
|
||||
{_2024_day7_part1, _2024_day7_part2},
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
{day9_part1, day9_part2},
|
||||
2024, 8,
|
||||
{_2024_day8_part1, _2024_day8_part2},
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
{day10_part1, day10_part2},
|
||||
2024, 9,
|
||||
{_2024_day9_part1, _2024_day9_part2},
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
{day11_part1, day11_part2},
|
||||
2024, 10,
|
||||
{_2024_day10_part1, _2024_day10_part2},
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
2024, 11,
|
||||
{_2024_day11_part1, _2024_day11_part2},
|
||||
NULL,
|
||||
},
|
||||
};
|
||||
|
74
solutions.mk
74
solutions.mk
@ -1,36 +1,40 @@
|
||||
DAY_OBJ = \
|
||||
day1/sample1.txt.o \
|
||||
day1/input.txt.o \
|
||||
day1/solution.o \
|
||||
day2/sample1.txt.o \
|
||||
day2/input.txt.o \
|
||||
day2/solution.o \
|
||||
day3/sample1.txt.o \
|
||||
day3/sample2.txt.o \
|
||||
day3/input.txt.o \
|
||||
day3/solution.o \
|
||||
day4/sample1.txt.o \
|
||||
day4/input.txt.o \
|
||||
day4/solution.o \
|
||||
day5/sample1.txt.o \
|
||||
day5/input.txt.o \
|
||||
day5/solution.o \
|
||||
day6/sample1.txt.o \
|
||||
day6/input.txt.o \
|
||||
day6/render.o \
|
||||
day6/solution.o \
|
||||
day7/sample1.txt.o \
|
||||
day7/input.txt.o \
|
||||
day7/solution.o \
|
||||
day8/sample1.txt.o \
|
||||
day8/input.txt.o \
|
||||
day8/solution.o \
|
||||
day9/sample1.txt.o \
|
||||
day9/input.txt.o \
|
||||
day9/solution.o \
|
||||
day10/sample1.txt.o \
|
||||
day10/input.txt.o \
|
||||
day10/solution.o \
|
||||
day11/sample1.txt.o \
|
||||
day11/input.txt.o \
|
||||
day11/solution.o
|
||||
2023/day1/sample1.txt.o \
|
||||
2023/day1/sample2.txt.o \
|
||||
2023/day1/input.txt.o \
|
||||
2023/day1/solution.o \
|
||||
2024/day1/sample1.txt.o \
|
||||
2024/day1/input.txt.o \
|
||||
2024/day1/solution.o \
|
||||
2024/day2/sample1.txt.o \
|
||||
2024/day2/input.txt.o \
|
||||
2024/day2/solution.o \
|
||||
2024/day3/sample1.txt.o \
|
||||
2024/day3/sample2.txt.o \
|
||||
2024/day3/input.txt.o \
|
||||
2024/day3/solution.o \
|
||||
2024/day4/sample1.txt.o \
|
||||
2024/day4/input.txt.o \
|
||||
2024/day4/solution.o \
|
||||
2024/day5/sample1.txt.o \
|
||||
2024/day5/input.txt.o \
|
||||
2024/day5/solution.o \
|
||||
2024/day6/sample1.txt.o \
|
||||
2024/day6/input.txt.o \
|
||||
2024/day6/render.o \
|
||||
2024/day6/solution.o \
|
||||
2024/day7/sample1.txt.o \
|
||||
2024/day7/input.txt.o \
|
||||
2024/day7/solution.o \
|
||||
2024/day8/sample1.txt.o \
|
||||
2024/day8/input.txt.o \
|
||||
2024/day8/solution.o \
|
||||
2024/day9/sample1.txt.o \
|
||||
2024/day9/input.txt.o \
|
||||
2024/day9/solution.o \
|
||||
2024/day10/sample1.txt.o \
|
||||
2024/day10/input.txt.o \
|
||||
2024/day10/solution.o \
|
||||
2024/day11/sample1.txt.o \
|
||||
2024/day11/input.txt.o \
|
||||
2024/day11/solution.o
|
||||
|
Loading…
x
Reference in New Issue
Block a user