aoc24: day17 started

This commit is contained in:
2024-12-17 18:01:49 +01:00
parent 5c7da45fe1
commit 5810fe22e9
5 changed files with 71 additions and 0 deletions

View File

@@ -16,6 +16,7 @@ set(SOURCES
# "day11.cpp"
"day14.cpp"
"day16.cpp"
"day17.cpp"
)
add_library(aoc24 STATIC ${HEADERS} ${SOURCES})
target_include_directories(aoc24

View File

@@ -31,6 +31,7 @@ auto entry([[maybe_unused]]std::span<char const*> const& args) -> std::expected<
// case 11: return day11(args);
case 14: return day14(args);
case 16: return day16(args);
case 17: return day17(args);
default:
return aoc::make_error(fmt::format("day {}", day), std::errc::not_supported);
}

59
sol/24/day17.cpp Normal file
View File

@@ -0,0 +1,59 @@
#include <vector>
#include <ranges>
#include <numeric>
#include <memory>
#include "aoc.hpp"
#include "aoc/utils.hpp"
#include "fmt/format.h"
#include "stb_image_write.h"
using namespace aoc::types;
using namespace std::string_view_literals;
namespace uec {
enum class opcode : u8 {
adv,
bxl,
bst,
jnz,
bxc,
out,
bdv,
cdv
};
struct regs {
u64 a;
u64 b;
u64 c;
};
class cpu {
public:
cpu() {}
auto load(uec::regs const& regs, std::vector<opcode> const& program) -> void {
m_regs = regs;
m_program = program;
}
auto registers() const -> uec::regs { return m_regs; }
auto program() const -> std::vector<opcode> const& { return m_program; }
private:
uec::regs m_regs{};
std::vector<opcode> m_program{};
};
}
auto aoc24::day17([[maybe_unused]]std::span<char const*> const& args) -> std::expected<void, aoc::error> {
auto res = aoc::read_text("./dat/24/ex/17.txt");
// auto res = aoc::read_text("./dat/24/re/17.txt");
if (!res) return std::unexpected(res.error());
auto const txt = *res;
auto
return {};
}