day 17, part 1 (fixed solution)

main
Inga 🏳‍🌈 5 months ago
parent 11788cc1ed
commit 1d56beeab9
  1. 9
      day17-easy/src/main.zig

@ -169,18 +169,17 @@ fn getNextTasks(board: []const []const u8, task: Task) NextTasks {
}
fn solveLines(lines: [][]u8) usize {
var total_max: u32 = 0;
for (lines) |line| {
for (line) |*char| {
char.* = char.* - '0';
total_max += char.*;
}
}
const x_max = @as(u8, @intCast(lines.len - 1));
const y_max = @as(u8, @intCast(lines[x_max].len - 1));
const max_value: u16 = @as(u16, 18) * @max(x_max, y_max) + lines[x_max][y_max];
var results: Results = [_][150]ResultsByDirection{[_]ResultsByDirection{ResultsByDirection.initFill(total_max)} ** 150} ** 150;
var results: Results = [_][150]ResultsByDirection{[_]ResultsByDirection{ResultsByDirection.initFill(max_value)} ** 150} ** 150;
var tasks = RingQueue(Task, usize, 1_024_576).init();
tasks.add(.{
.current_heat = lines[x_max][y_max],
@ -208,7 +207,7 @@ fn solveLines(lines: [][]u8) usize {
}
if (false) {
std.debug.print("Total tasks done: {d}\n", .{i});
//std.debug.print("Total tasks done: {d}\n", .{i});
for (0..lines.len) |x| {
for (0..lines[x].len) |y| {
std.debug.print("{d}/{d} ", .{ results[x][y].get(.Horizontal), results[x][y].get(.Vertical) });
@ -217,7 +216,7 @@ fn solveLines(lines: [][]u8) usize {
}
}
return results[0][0].get(.Vertical) - lines[0][0];
return @min(results[0][0].get(.Vertical), results[0][0].get(.Horizontal)) - lines[0][0];
}
pub fn solveAll(reader: anytype) !usize {

Loading…
Cancel
Save