From b89bee9c35a8c021575d5e8b1ee72f5aaa1895d3 Mon Sep 17 00:00:00 2001 From: Ben Kyd Date: Thu, 30 Oct 2025 09:11:56 +0000 Subject: [PATCH] 2025 framework --- 2024/README.md | 1 + 2025/Makefile | 15 +++++++++++++++ 2025/aoc | Bin 0 -> 38800 bytes 2025/aoc.cpp | 15 +++++++++++++++ 2025/aoc.hpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 2025/day1.hpp | 0 6 files changed, 73 insertions(+) create mode 100644 2024/README.md create mode 100644 2025/Makefile create mode 100755 2025/aoc create mode 100644 2025/aoc.cpp create mode 100644 2025/aoc.hpp create mode 100644 2025/day1.hpp diff --git a/2024/README.md b/2024/README.md new file mode 100644 index 0000000..b3b8f17 --- /dev/null +++ b/2024/README.md @@ -0,0 +1 @@ +... oops diff --git a/2025/Makefile b/2025/Makefile new file mode 100644 index 0000000..0de7060 --- /dev/null +++ b/2025/Makefile @@ -0,0 +1,15 @@ +CXX := clang++ +CXXFLAGS := -std=c++17 -Wall -Wextra -I. + +TARGET := aoc +SRC := aoc.cpp + +all: $(TARGET) + +$(TARGET): $(SRC) + $(CXX) $(CXXFLAGS) $(SRC) -o $(TARGET) + +clean: + rm -f $(TARGET) + +.PHONY: all clean diff --git a/2025/aoc b/2025/aoc new file mode 100755 index 0000000000000000000000000000000000000000..a63ab4d0514cba2da163909d6883316579b30b23 GIT binary patch literal 38800 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 literal 0 HcmV?d00001 diff --git a/2025/aoc.cpp b/2025/aoc.cpp new file mode 100644 index 0000000..5279120 --- /dev/null +++ b/2025/aoc.cpp @@ -0,0 +1,15 @@ +#include + +int main(int argc, char** argv) { + std::cout << "Advent of Code 2025 runner" << std::endl; + std::cout << "©Ben Kyd 2025, All Rights Reserved" << std::endl; + + std::cout << "\n\n Usage: -d [day] (omit for all)" << std::endl; + + // Parse command line + + // Find days + + // Run days +} + diff --git a/2025/aoc.hpp b/2025/aoc.hpp new file mode 100644 index 0000000..620e0c4 --- /dev/null +++ b/2025/aoc.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include +#include +#include + +struct FileFragment +{ + int Line,Col; + std::string Data; +}; + +class File +{ +public: + // loads full file into memory RAII style + // AS BLOB + File(std::filesystem::path path); + ~File(); + + void SplitBy(char delim) + { + + } + +private: + // Tokens are garunteed to be in-order + std::vector _tokens; + +}; + +class AOCDay +{ + public: + AOCDay(); + virtual ~AOCDay() = 0; + + virtual int PartOne(const File&) = 0; + virtual int PartTwo(const File&) = 0; +}; + + diff --git a/2025/day1.hpp b/2025/day1.hpp new file mode 100644 index 0000000..e69de29