aoc24: day17 started
This commit is contained in:
5
dat/24/ex/17.txt
Normal file
5
dat/24/ex/17.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
Register A: 729
|
||||
Register B: 0
|
||||
Register C: 0
|
||||
|
||||
Program: 0,1,5,4,3,0
|
||||
5
dat/24/re/17.txt
Normal file
5
dat/24/re/17.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
Register A: 22817223
|
||||
Register B: 0
|
||||
Register C: 0
|
||||
|
||||
Program: 2,4,1,2,7,5,4,5,0,3,1,7,5,5,3,0
|
||||
@@ -16,6 +16,7 @@ set(SOURCES
|
||||
# "day11.cpp"
|
||||
"day14.cpp"
|
||||
"day16.cpp"
|
||||
"day17.cpp"
|
||||
)
|
||||
add_library(aoc24 STATIC ${HEADERS} ${SOURCES})
|
||||
target_include_directories(aoc24
|
||||
|
||||
@@ -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
59
sol/24/day17.cpp
Normal 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 {};
|
||||
}
|
||||
Reference in New Issue
Block a user