Files
aoc/sol/24/day17.cpp

60 lines
1.1 KiB
C++

#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 {};
}