Switch to using a queue for character devices

This commit is contained in:
2019-12-07 18:35:03 +00:00
parent 4f614c7727
commit 325ec9d591
5 changed files with 77 additions and 39 deletions

View File

@@ -14,19 +14,20 @@ pub fn main() anyerror!void {
var m1 = try intcode.Machine.init(alloc, p1);
var m2 = try intcode.Machine.init(alloc, p2);
std.debug.warn("Part 1\n");
try m1.input.append(1); // Air conditioner unit
try m1.writeToInput(1); // Air conditioner unit
try m1.run();
for (m1.output.toSlice()) |value, idx| {
std.debug.warn("Test {}: {}\n", idx, value);
var out: i32 = 0;
while (m1.readFromOutput(false)) |item| {
out = item;
} else |err| {
std.debug.assert(err == std.os.ReadError.WouldBlock);
}
std.debug.warn("\nPart 2\n");
try m2.input.append(5); // Thermal radiator controller
std.debug.warn("Day 5, Part 1: {}\n", out);
try m2.writeToInput(5); // Thermal radiator controller
try m2.run();
for (m2.output.toSlice()) |value, idx| {
std.debug.warn("Test {}: {}\n", idx, value);
}
std.debug.warn("Day 5, Part 2: {}\n", try m2.readFromOutput(false));
}