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;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t day1_part1(const char * input, int length)
|
int64_t _2024_day1_part1(const char * input, int length)
|
||||||
{
|
{
|
||||||
struct list list;
|
struct list list;
|
||||||
int list_length = parse_input(input, length, &list);
|
int list_length = parse_input(input, length, &list);
|
||||||
@ -42,7 +42,7 @@ int64_t day1_part1(const char * input, int length)
|
|||||||
return sum;
|
return sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t day1_part2(const char * input, int length)
|
int64_t _2024_day1_part2(const char * input, int length)
|
||||||
{
|
{
|
||||||
struct list list;
|
struct list list;
|
||||||
int list_length = parse_input(input, length, &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};
|
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 stride = parse_stride(input, length);
|
||||||
int height = parse_height(input, length);
|
int height = parse_height(input, length);
|
||||||
@ -98,7 +98,7 @@ int64_t day10_part1(const char * input, int length)
|
|||||||
return rs.score;
|
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 stride = parse_stride(input, length);
|
||||||
int height = parse_height(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;
|
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);
|
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);
|
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;
|
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];
|
struct report report[1000];
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ int64_t day2_part1(const char * input, int length)
|
|||||||
return sum;
|
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];
|
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;
|
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];
|
struct instruction ins[1000];
|
||||||
|
|
||||||
@ -104,7 +104,7 @@ int64_t day3_part1(const char * input, int length)
|
|||||||
return sum;
|
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];
|
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;
|
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 stride = parse_stride(input, length);
|
||||||
int height = parse_height(input, length);
|
int height = parse_height(input, length);
|
||||||
@ -149,7 +149,7 @@ int64_t day4_part1(const char * input, int length)
|
|||||||
return match_count;
|
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 stride = parse_stride(input, length);
|
||||||
int height = parse_height(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;
|
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);
|
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);
|
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,7 +152,7 @@ void a_press()
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
void day6_render(const struct font * font,
|
void _2024_day6_render(const struct font * font,
|
||||||
const struct glyph * glyphs,
|
const struct glyph * glyphs,
|
||||||
ft0::data_transfer::data_format * maple_ft0_data)
|
ft0::data_transfer::data_format * maple_ft0_data)
|
||||||
{
|
{
|
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;
|
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 stride = parse_stride(input, length);
|
||||||
int height = parse_height(input, length);
|
int height = parse_height(input, length);
|
||||||
@ -196,7 +196,7 @@ static bool speculative_obstacle_causes_loop(const char * input,
|
|||||||
return false;
|
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 stride = parse_stride(input, length);
|
||||||
int height = parse_height(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);
|
|| 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;
|
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);
|
|| 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;
|
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 stride = parse_stride(input, length);
|
||||||
int height = parse_height(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);
|
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 stride = parse_stride(input, length);
|
||||||
int height = parse_height(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');
|
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 blocks[length * 9];
|
||||||
int ix = disk_map_to_blocks1(input, length, blocks);
|
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);
|
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 blocks[length * 9];
|
||||||
int ix = disk_map_to_blocks2(input, length, blocks);
|
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
|
CFLAGS += -Wno-char-subscripts
|
||||||
LIB ?= $(MAKEFILE_PATH)/dreamcast
|
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
|
include aoc.mk
|
||||||
|
10
aoc.mk
10
aoc.mk
@ -19,11 +19,11 @@ DREAMCAST_OBJ = \
|
|||||||
$(LIB)/holly/video_output.o \
|
$(LIB)/holly/video_output.o \
|
||||||
$(LIB)/font/dejavusansmono/dejavusansmono.data.o \
|
$(LIB)/font/dejavusansmono/dejavusansmono.data.o \
|
||||||
$(LIB)/sh7091/serial.o \
|
$(LIB)/sh7091/serial.o \
|
||||||
$(LIB)/maple/maple.o
|
$(LIB)/maple/maple.o \
|
||||||
# libgcc/_divdi3.o \
|
libgcc/_divdi3.o \
|
||||||
# libgcc/_moddi3.o \
|
libgcc/_moddi3.o \
|
||||||
# libgcc/_udiv_qrnnd_16.o \
|
libgcc/_udiv_qrnnd_16.o \
|
||||||
# libgcc/_clz.o
|
libgcc/_clz.o
|
||||||
|
|
||||||
include solutions.mk
|
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
|
|
116
gen.sh
116
gen.sh
@ -2,87 +2,100 @@
|
|||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
day="$1"
|
year="$1"
|
||||||
|
day="$2"
|
||||||
|
|
||||||
if [ ! -z "$day" ]; then
|
if [ ! -z $year && ! -z "$year/$day" ]; then
|
||||||
re='^[0-9]+$'
|
re='^[0-9]+$'
|
||||||
|
if ! [[ $year =~ $re ]] ; then
|
||||||
|
echo "error: $year: not a number" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
if ! [[ $day =~ $re ]] ; then
|
if ! [[ $day =~ $re ]] ; then
|
||||||
echo "error: $day: not a number" >&2
|
echo "error: $day: not a number" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p day${day}
|
mkdir -p ${year}/day${day}
|
||||||
cat <<EOF > day${day}/solution.c
|
cat <<EOF > ${year}/day${day}/solution.c
|
||||||
#include <stdint.h>
|
#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;
|
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;
|
return -1;
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if [ ! -f day${day}/sample1.txt ]; then
|
if [ ! -f ${year}/day${day}/sample1.txt ]; then
|
||||||
touch day${day}/sample1.txt
|
touch ${year}/day${day}/sample1.txt
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f day${day}/input.txt ]; then
|
if [ ! -f ${year}/day${day}/input.txt ]; then
|
||||||
touch day${day}/input.txt
|
touch ${year}/day${day}/input.txt
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
function binary_header_include ()
|
||||||
|
{
|
||||||
|
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 ()
|
function gen_start_size ()
|
||||||
{
|
{
|
||||||
echo "$1 { ( char *)&_binary_${2}_${3}_txt_start," >> input_dreamcast.inc
|
local name=${2//\//_}
|
||||||
echo "$1 (uint32_t)&_binary_${2}_${3}_txt_size }," >> input_dreamcast.inc
|
echo "$1 { ( char *)&_binary_${name}_${3}_txt_start," >> input_dreamcast.inc
|
||||||
|
echo "$1 (uint32_t)&_binary_${name}_${3}_txt_size }," >> input_dreamcast.inc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
for i in ????/day? ????/day?? ; do
|
||||||
make ${i}/sample1.txt.h ${i}/input.txt.h
|
make ${i}/sample1.txt.h ${i}/input.txt.h
|
||||||
if [ -f ${i}/sample2.txt ]; then
|
if [ -f ${i}/sample2.txt ]; then
|
||||||
make ${i}/sample2.txt.h
|
make ${i}/sample2.txt.h
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
truncate -s0 input_dreamcast.inc
|
truncate -s0 input_dreamcast.inc
|
||||||
|
|
||||||
for i in day? day?? ; do
|
for i in ????/day? ????/day?? ; do
|
||||||
echo "#include \"${i}/sample1.txt.h\"" >> input_dreamcast.inc
|
binary_header_include ${i}
|
||||||
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
|
|
||||||
done
|
done
|
||||||
echo >> input_dreamcast.inc
|
echo >> input_dreamcast.inc
|
||||||
echo "static struct start_size sample[][2] = {" >> input_dreamcast.inc
|
echo "static struct start_size sample[][2] = {" >> input_dreamcast.inc
|
||||||
for i in day? day?? ; do
|
for i in ????/day? ????/day?? ; do
|
||||||
echo " {" >> input_dreamcast.inc
|
sample ${i}
|
||||||
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
|
|
||||||
done
|
done
|
||||||
echo "};" >> input_dreamcast.inc
|
echo "};" >> input_dreamcast.inc
|
||||||
echo >> input_dreamcast.inc
|
echo >> input_dreamcast.inc
|
||||||
echo "static struct start_size input[] = {" >> 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"
|
gen_start_size "" "${i}" "input"
|
||||||
done
|
done
|
||||||
echo "};" >> input_dreamcast.inc
|
echo "};" >> input_dreamcast.inc
|
||||||
|
|
||||||
|
|
||||||
truncate -s0 solutions.mk
|
truncate -s0 solutions.mk
|
||||||
echo -n "DAY_OBJ =" >> solutions.mk
|
echo -n "DAY_OBJ =" >> solutions.mk
|
||||||
for i in day? day?? ; do
|
for i in ????/day? ????/day?? ; do
|
||||||
echo " \\" >> solutions.mk
|
echo " \\" >> solutions.mk
|
||||||
echo " ${i}/sample1.txt.o \\" >> solutions.mk
|
echo " ${i}/sample1.txt.o \\" >> solutions.mk
|
||||||
if [ -f ${i}/sample2.txt ]; then
|
if [ -f ${i}/sample2.txt ]; then
|
||||||
@ -96,26 +109,41 @@ for i in day? day?? ; do
|
|||||||
done
|
done
|
||||||
echo >> solutions.mk
|
echo >> solutions.mk
|
||||||
|
|
||||||
truncate -s0 runner.inc
|
function part_declaration ()
|
||||||
for i in day? day?? ; do
|
{
|
||||||
echo "int64_t ${i}_part1(const char * input, int length);" >> runner.inc
|
local name=${1//\//_}
|
||||||
echo "int64_t ${i}_part2(const char * input, int length);" >> runner.inc
|
echo "int64_t _${name}_part1(const char * input, int length);" >> runner.inc
|
||||||
if [ -f ${i}/render.cpp ]; then
|
echo "int64_t _${name}_part2(const char * input, int length);" >> runner.inc
|
||||||
echo "void ${i}_render(const struct font * font," >> 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 struct glyph * glyphs," >> runner.inc
|
||||||
echo " const void * maple_ft0_data);" >> runner.inc
|
echo " const void * maple_ft0_data);" >> runner.inc
|
||||||
fi
|
fi
|
||||||
done
|
}
|
||||||
echo >> runner.inc
|
|
||||||
echo "struct day_funcs solution[] = {" >> runner.inc
|
function solution_array_content ()
|
||||||
for i in day? day?? ; do
|
{
|
||||||
|
local name=${1//\//_}
|
||||||
|
regex='([0-9]+)/day([0-9]+)'
|
||||||
|
[[ $1 =~ $regex ]]
|
||||||
echo " {" >> runner.inc
|
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
|
if [ -f ${i}/render.cpp ]; then
|
||||||
echo " ${i}_render," >> runner.inc
|
echo " _${name}_render," >> runner.inc
|
||||||
else
|
else
|
||||||
echo " NULL," >> runner.inc
|
echo " NULL," >> runner.inc
|
||||||
fi
|
fi
|
||||||
echo " }," >> runner.inc
|
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
|
done
|
||||||
echo "};" >> runner.inc
|
echo "};" >> runner.inc
|
||||||
|
4
input.h
4
input.h
@ -4,8 +4,8 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void open_input(int day, char ** buf, int * length);
|
void open_input(int ix, char ** buf, int * length);
|
||||||
void open_sample(int day, int part, char ** buf, int * length);
|
void open_sample(int ix, int part, char ** buf, int * length);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -12,24 +12,24 @@ struct start_size {
|
|||||||
|
|
||||||
const int input_size = (sizeof (input)) / (sizeof (input[0]));
|
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;
|
*buf = NULL;
|
||||||
*length = 0;
|
*length = 0;
|
||||||
} else {
|
} else {
|
||||||
*buf = input[day - 1].start;
|
*buf = input[ix].start;
|
||||||
*length = input[day - 1].size;
|
*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;
|
*buf = NULL;
|
||||||
*length = 0;
|
*length = 0;
|
||||||
} else {
|
} else {
|
||||||
*buf = sample[day - 1][part - 1].start;
|
*buf = sample[ix][part].start;
|
||||||
*length = sample[day - 1][part - 1].size;
|
*length = sample[ix][part].size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,117 +1,128 @@
|
|||||||
#include "day1/sample1.txt.h"
|
#include "2023/day1/sample1.txt.h"
|
||||||
#include "day1/input.txt.h"
|
#include "2023/day1/sample2.txt.h"
|
||||||
#include "day2/sample1.txt.h"
|
#include "2023/day1/input.txt.h"
|
||||||
#include "day2/input.txt.h"
|
#include "2024/day1/sample1.txt.h"
|
||||||
#include "day3/sample1.txt.h"
|
#include "2024/day1/input.txt.h"
|
||||||
#include "day3/sample2.txt.h"
|
#include "2024/day2/sample1.txt.h"
|
||||||
#include "day3/input.txt.h"
|
#include "2024/day2/input.txt.h"
|
||||||
#include "day4/sample1.txt.h"
|
#include "2024/day3/sample1.txt.h"
|
||||||
#include "day4/input.txt.h"
|
#include "2024/day3/sample2.txt.h"
|
||||||
#include "day5/sample1.txt.h"
|
#include "2024/day3/input.txt.h"
|
||||||
#include "day5/input.txt.h"
|
#include "2024/day4/sample1.txt.h"
|
||||||
#include "day6/sample1.txt.h"
|
#include "2024/day4/input.txt.h"
|
||||||
#include "day6/input.txt.h"
|
#include "2024/day5/sample1.txt.h"
|
||||||
#include "day7/sample1.txt.h"
|
#include "2024/day5/input.txt.h"
|
||||||
#include "day7/input.txt.h"
|
#include "2024/day6/sample1.txt.h"
|
||||||
#include "day8/sample1.txt.h"
|
#include "2024/day6/input.txt.h"
|
||||||
#include "day8/input.txt.h"
|
#include "2024/day7/sample1.txt.h"
|
||||||
#include "day9/sample1.txt.h"
|
#include "2024/day7/input.txt.h"
|
||||||
#include "day9/input.txt.h"
|
#include "2024/day8/sample1.txt.h"
|
||||||
#include "day10/sample1.txt.h"
|
#include "2024/day8/input.txt.h"
|
||||||
#include "day10/input.txt.h"
|
#include "2024/day9/sample1.txt.h"
|
||||||
#include "day11/sample1.txt.h"
|
#include "2024/day9/input.txt.h"
|
||||||
#include "day11/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] = {
|
static struct start_size sample[][2] = {
|
||||||
{
|
{
|
||||||
{ ( char *)&_binary_day1_sample1_txt_start,
|
{ ( char *)&_binary_2023_day1_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day1_sample1_txt_size },
|
(uint32_t)&_binary_2023_day1_sample1_txt_size },
|
||||||
{ ( char *)&_binary_day1_sample1_txt_start,
|
{ ( char *)&_binary_2023_day1_sample2_txt_start,
|
||||||
(uint32_t)&_binary_day1_sample1_txt_size },
|
(uint32_t)&_binary_2023_day1_sample2_txt_size },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ ( char *)&_binary_day2_sample1_txt_start,
|
{ ( char *)&_binary_2024_day1_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day2_sample1_txt_size },
|
(uint32_t)&_binary_2024_day1_sample1_txt_size },
|
||||||
{ ( char *)&_binary_day2_sample1_txt_start,
|
{ ( char *)&_binary_2024_day1_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day2_sample1_txt_size },
|
(uint32_t)&_binary_2024_day1_sample1_txt_size },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ ( char *)&_binary_day3_sample1_txt_start,
|
{ ( char *)&_binary_2024_day2_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day3_sample1_txt_size },
|
(uint32_t)&_binary_2024_day2_sample1_txt_size },
|
||||||
{ ( char *)&_binary_day3_sample2_txt_start,
|
{ ( char *)&_binary_2024_day2_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day3_sample2_txt_size },
|
(uint32_t)&_binary_2024_day2_sample1_txt_size },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ ( char *)&_binary_day4_sample1_txt_start,
|
{ ( char *)&_binary_2024_day3_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day4_sample1_txt_size },
|
(uint32_t)&_binary_2024_day3_sample1_txt_size },
|
||||||
{ ( char *)&_binary_day4_sample1_txt_start,
|
{ ( char *)&_binary_2024_day3_sample2_txt_start,
|
||||||
(uint32_t)&_binary_day4_sample1_txt_size },
|
(uint32_t)&_binary_2024_day3_sample2_txt_size },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ ( char *)&_binary_day5_sample1_txt_start,
|
{ ( char *)&_binary_2024_day4_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day5_sample1_txt_size },
|
(uint32_t)&_binary_2024_day4_sample1_txt_size },
|
||||||
{ ( char *)&_binary_day5_sample1_txt_start,
|
{ ( char *)&_binary_2024_day4_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day5_sample1_txt_size },
|
(uint32_t)&_binary_2024_day4_sample1_txt_size },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ ( char *)&_binary_day6_sample1_txt_start,
|
{ ( char *)&_binary_2024_day5_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day6_sample1_txt_size },
|
(uint32_t)&_binary_2024_day5_sample1_txt_size },
|
||||||
{ ( char *)&_binary_day6_sample1_txt_start,
|
{ ( char *)&_binary_2024_day5_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day6_sample1_txt_size },
|
(uint32_t)&_binary_2024_day5_sample1_txt_size },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ ( char *)&_binary_day7_sample1_txt_start,
|
{ ( char *)&_binary_2024_day6_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day7_sample1_txt_size },
|
(uint32_t)&_binary_2024_day6_sample1_txt_size },
|
||||||
{ ( char *)&_binary_day7_sample1_txt_start,
|
{ ( char *)&_binary_2024_day6_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day7_sample1_txt_size },
|
(uint32_t)&_binary_2024_day6_sample1_txt_size },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ ( char *)&_binary_day8_sample1_txt_start,
|
{ ( char *)&_binary_2024_day7_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day8_sample1_txt_size },
|
(uint32_t)&_binary_2024_day7_sample1_txt_size },
|
||||||
{ ( char *)&_binary_day8_sample1_txt_start,
|
{ ( char *)&_binary_2024_day7_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day8_sample1_txt_size },
|
(uint32_t)&_binary_2024_day7_sample1_txt_size },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ ( char *)&_binary_day9_sample1_txt_start,
|
{ ( char *)&_binary_2024_day8_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day9_sample1_txt_size },
|
(uint32_t)&_binary_2024_day8_sample1_txt_size },
|
||||||
{ ( char *)&_binary_day9_sample1_txt_start,
|
{ ( char *)&_binary_2024_day8_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day9_sample1_txt_size },
|
(uint32_t)&_binary_2024_day8_sample1_txt_size },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ ( char *)&_binary_day10_sample1_txt_start,
|
{ ( char *)&_binary_2024_day9_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day10_sample1_txt_size },
|
(uint32_t)&_binary_2024_day9_sample1_txt_size },
|
||||||
{ ( char *)&_binary_day10_sample1_txt_start,
|
{ ( char *)&_binary_2024_day9_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day10_sample1_txt_size },
|
(uint32_t)&_binary_2024_day9_sample1_txt_size },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ ( char *)&_binary_day11_sample1_txt_start,
|
{ ( char *)&_binary_2024_day10_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day11_sample1_txt_size },
|
(uint32_t)&_binary_2024_day10_sample1_txt_size },
|
||||||
{ ( char *)&_binary_day11_sample1_txt_start,
|
{ ( char *)&_binary_2024_day10_sample1_txt_start,
|
||||||
(uint32_t)&_binary_day11_sample1_txt_size },
|
(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[] = {
|
static struct start_size input[] = {
|
||||||
{ ( char *)&_binary_day1_input_txt_start,
|
{ ( char *)&_binary_2023_day1_input_txt_start,
|
||||||
(uint32_t)&_binary_day1_input_txt_size },
|
(uint32_t)&_binary_2023_day1_input_txt_size },
|
||||||
{ ( char *)&_binary_day2_input_txt_start,
|
{ ( char *)&_binary_2024_day1_input_txt_start,
|
||||||
(uint32_t)&_binary_day2_input_txt_size },
|
(uint32_t)&_binary_2024_day1_input_txt_size },
|
||||||
{ ( char *)&_binary_day3_input_txt_start,
|
{ ( char *)&_binary_2024_day2_input_txt_start,
|
||||||
(uint32_t)&_binary_day3_input_txt_size },
|
(uint32_t)&_binary_2024_day2_input_txt_size },
|
||||||
{ ( char *)&_binary_day4_input_txt_start,
|
{ ( char *)&_binary_2024_day3_input_txt_start,
|
||||||
(uint32_t)&_binary_day4_input_txt_size },
|
(uint32_t)&_binary_2024_day3_input_txt_size },
|
||||||
{ ( char *)&_binary_day5_input_txt_start,
|
{ ( char *)&_binary_2024_day4_input_txt_start,
|
||||||
(uint32_t)&_binary_day5_input_txt_size },
|
(uint32_t)&_binary_2024_day4_input_txt_size },
|
||||||
{ ( char *)&_binary_day6_input_txt_start,
|
{ ( char *)&_binary_2024_day5_input_txt_start,
|
||||||
(uint32_t)&_binary_day6_input_txt_size },
|
(uint32_t)&_binary_2024_day5_input_txt_size },
|
||||||
{ ( char *)&_binary_day7_input_txt_start,
|
{ ( char *)&_binary_2024_day6_input_txt_start,
|
||||||
(uint32_t)&_binary_day7_input_txt_size },
|
(uint32_t)&_binary_2024_day6_input_txt_size },
|
||||||
{ ( char *)&_binary_day8_input_txt_start,
|
{ ( char *)&_binary_2024_day7_input_txt_start,
|
||||||
(uint32_t)&_binary_day8_input_txt_size },
|
(uint32_t)&_binary_2024_day7_input_txt_size },
|
||||||
{ ( char *)&_binary_day9_input_txt_start,
|
{ ( char *)&_binary_2024_day8_input_txt_start,
|
||||||
(uint32_t)&_binary_day9_input_txt_size },
|
(uint32_t)&_binary_2024_day8_input_txt_size },
|
||||||
{ ( char *)&_binary_day10_input_txt_start,
|
{ ( char *)&_binary_2024_day9_input_txt_start,
|
||||||
(uint32_t)&_binary_day10_input_txt_size },
|
(uint32_t)&_binary_2024_day9_input_txt_size },
|
||||||
{ ( char *)&_binary_day11_input_txt_start,
|
{ ( char *)&_binary_2024_day10_input_txt_start,
|
||||||
(uint32_t)&_binary_day11_input_txt_size },
|
(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);
|
const void * maple_ft0_data);
|
||||||
|
|
||||||
struct day_funcs {
|
struct day_funcs {
|
||||||
|
int year;
|
||||||
|
int day;
|
||||||
part_func part[2];
|
part_func part[2];
|
||||||
render_func render;
|
render_func render;
|
||||||
};
|
};
|
||||||
@ -23,6 +25,7 @@ const int solution_ticks = solution_days * 2;
|
|||||||
bool runner_tick(struct runner_state * runner_state)
|
bool runner_tick(struct runner_state * runner_state)
|
||||||
{
|
{
|
||||||
int tick = (solution_ticks - 1) - runner_state->tick;
|
int tick = (solution_ticks - 1) - runner_state->tick;
|
||||||
|
//int tick = runner_state->tick;
|
||||||
|
|
||||||
if (tick < 0) {
|
if (tick < 0) {
|
||||||
runner_state->want_render = false;
|
runner_state->want_render = false;
|
||||||
@ -30,20 +33,19 @@ bool runner_tick(struct runner_state * runner_state)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int part = tick % 2;
|
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)
|
runner_state->want_render = solution[ix].render != NULL;
|
||||||
return true;
|
|
||||||
|
|
||||||
runner_state->want_render = solution[day].render != NULL;
|
|
||||||
|
|
||||||
char * buf;
|
char * buf;
|
||||||
int length;
|
int length;
|
||||||
//open_sample(day + 1, part + 1, &buf, &length);
|
open_sample(ix, part, &buf, &length);
|
||||||
open_input(day + 1, &buf, &length);
|
//open_input(ix, &buf, &length);
|
||||||
int64_t answer = solution[day].part[part](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;
|
runner_state->tick += 1;
|
||||||
|
|
||||||
|
92
runner.inc
92
runner.inc
@ -1,72 +1,90 @@
|
|||||||
int64_t day1_part1(const char * input, int length);
|
int64_t _2023_day1_part1(const char * input, int length);
|
||||||
int64_t day1_part2(const char * input, int length);
|
int64_t _2023_day1_part2(const char * input, int length);
|
||||||
int64_t day2_part1(const char * input, int length);
|
int64_t _2024_day1_part1(const char * input, int length);
|
||||||
int64_t day2_part2(const char * input, int length);
|
int64_t _2024_day1_part2(const char * input, int length);
|
||||||
int64_t day3_part1(const char * input, int length);
|
int64_t _2024_day2_part1(const char * input, int length);
|
||||||
int64_t day3_part2(const char * input, int length);
|
int64_t _2024_day2_part2(const char * input, int length);
|
||||||
int64_t day4_part1(const char * input, int length);
|
int64_t _2024_day3_part1(const char * input, int length);
|
||||||
int64_t day4_part2(const char * input, int length);
|
int64_t _2024_day3_part2(const char * input, int length);
|
||||||
int64_t day5_part1(const char * input, int length);
|
int64_t _2024_day4_part1(const char * input, int length);
|
||||||
int64_t day5_part2(const char * input, int length);
|
int64_t _2024_day4_part2(const char * input, int length);
|
||||||
int64_t day6_part1(const char * input, int length);
|
int64_t _2024_day5_part1(const char * input, int length);
|
||||||
int64_t day6_part2(const char * input, int length);
|
int64_t _2024_day5_part2(const char * input, int length);
|
||||||
void day6_render(const struct font * font,
|
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 struct glyph * glyphs,
|
||||||
const void * maple_ft0_data);
|
const void * maple_ft0_data);
|
||||||
int64_t day7_part1(const char * input, int length);
|
int64_t _2024_day7_part1(const char * input, int length);
|
||||||
int64_t day7_part2(const char * input, int length);
|
int64_t _2024_day7_part2(const char * input, int length);
|
||||||
int64_t day8_part1(const char * input, int length);
|
int64_t _2024_day8_part1(const char * input, int length);
|
||||||
int64_t day8_part2(const char * input, int length);
|
int64_t _2024_day8_part2(const char * input, int length);
|
||||||
int64_t day9_part1(const char * input, int length);
|
int64_t _2024_day9_part1(const char * input, int length);
|
||||||
int64_t day9_part2(const char * input, int length);
|
int64_t _2024_day9_part2(const char * input, int length);
|
||||||
int64_t day10_part1(const char * input, int length);
|
int64_t _2024_day10_part1(const char * input, int length);
|
||||||
int64_t day10_part2(const char * input, int length);
|
int64_t _2024_day10_part2(const char * input, int length);
|
||||||
int64_t day11_part1(const char * input, int length);
|
int64_t _2024_day11_part1(const char * input, int length);
|
||||||
int64_t day11_part2(const char * input, int length);
|
int64_t _2024_day11_part2(const char * input, int length);
|
||||||
|
|
||||||
struct day_funcs solution[] = {
|
struct day_funcs solution[] = {
|
||||||
{
|
{
|
||||||
{day1_part1, day1_part2},
|
2023, 1,
|
||||||
|
{_2023_day1_part1, _2023_day1_part2},
|
||||||
NULL,
|
NULL,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{day2_part1, day2_part2},
|
2024, 1,
|
||||||
|
{_2024_day1_part1, _2024_day1_part2},
|
||||||
NULL,
|
NULL,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{day3_part1, day3_part2},
|
2024, 2,
|
||||||
|
{_2024_day2_part1, _2024_day2_part2},
|
||||||
NULL,
|
NULL,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{day4_part1, day4_part2},
|
2024, 3,
|
||||||
|
{_2024_day3_part1, _2024_day3_part2},
|
||||||
NULL,
|
NULL,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{day5_part1, day5_part2},
|
2024, 4,
|
||||||
|
{_2024_day4_part1, _2024_day4_part2},
|
||||||
NULL,
|
NULL,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{day6_part1, day6_part2},
|
2024, 5,
|
||||||
day6_render,
|
{_2024_day5_part1, _2024_day5_part2},
|
||||||
},
|
|
||||||
{
|
|
||||||
{day7_part1, day7_part2},
|
|
||||||
NULL,
|
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,
|
NULL,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{day9_part1, day9_part2},
|
2024, 8,
|
||||||
|
{_2024_day8_part1, _2024_day8_part2},
|
||||||
NULL,
|
NULL,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{day10_part1, day10_part2},
|
2024, 9,
|
||||||
|
{_2024_day9_part1, _2024_day9_part2},
|
||||||
NULL,
|
NULL,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{day11_part1, day11_part2},
|
2024, 10,
|
||||||
|
{_2024_day10_part1, _2024_day10_part2},
|
||||||
|
NULL,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
2024, 11,
|
||||||
|
{_2024_day11_part1, _2024_day11_part2},
|
||||||
NULL,
|
NULL,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
74
solutions.mk
74
solutions.mk
@ -1,36 +1,40 @@
|
|||||||
DAY_OBJ = \
|
DAY_OBJ = \
|
||||||
day1/sample1.txt.o \
|
2023/day1/sample1.txt.o \
|
||||||
day1/input.txt.o \
|
2023/day1/sample2.txt.o \
|
||||||
day1/solution.o \
|
2023/day1/input.txt.o \
|
||||||
day2/sample1.txt.o \
|
2023/day1/solution.o \
|
||||||
day2/input.txt.o \
|
2024/day1/sample1.txt.o \
|
||||||
day2/solution.o \
|
2024/day1/input.txt.o \
|
||||||
day3/sample1.txt.o \
|
2024/day1/solution.o \
|
||||||
day3/sample2.txt.o \
|
2024/day2/sample1.txt.o \
|
||||||
day3/input.txt.o \
|
2024/day2/input.txt.o \
|
||||||
day3/solution.o \
|
2024/day2/solution.o \
|
||||||
day4/sample1.txt.o \
|
2024/day3/sample1.txt.o \
|
||||||
day4/input.txt.o \
|
2024/day3/sample2.txt.o \
|
||||||
day4/solution.o \
|
2024/day3/input.txt.o \
|
||||||
day5/sample1.txt.o \
|
2024/day3/solution.o \
|
||||||
day5/input.txt.o \
|
2024/day4/sample1.txt.o \
|
||||||
day5/solution.o \
|
2024/day4/input.txt.o \
|
||||||
day6/sample1.txt.o \
|
2024/day4/solution.o \
|
||||||
day6/input.txt.o \
|
2024/day5/sample1.txt.o \
|
||||||
day6/render.o \
|
2024/day5/input.txt.o \
|
||||||
day6/solution.o \
|
2024/day5/solution.o \
|
||||||
day7/sample1.txt.o \
|
2024/day6/sample1.txt.o \
|
||||||
day7/input.txt.o \
|
2024/day6/input.txt.o \
|
||||||
day7/solution.o \
|
2024/day6/render.o \
|
||||||
day8/sample1.txt.o \
|
2024/day6/solution.o \
|
||||||
day8/input.txt.o \
|
2024/day7/sample1.txt.o \
|
||||||
day8/solution.o \
|
2024/day7/input.txt.o \
|
||||||
day9/sample1.txt.o \
|
2024/day7/solution.o \
|
||||||
day9/input.txt.o \
|
2024/day8/sample1.txt.o \
|
||||||
day9/solution.o \
|
2024/day8/input.txt.o \
|
||||||
day10/sample1.txt.o \
|
2024/day8/solution.o \
|
||||||
day10/input.txt.o \
|
2024/day9/sample1.txt.o \
|
||||||
day10/solution.o \
|
2024/day9/input.txt.o \
|
||||||
day11/sample1.txt.o \
|
2024/day9/solution.o \
|
||||||
day11/input.txt.o \
|
2024/day10/sample1.txt.o \
|
||||||
day11/solution.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