advent-of-code/2023/day-02/part_two.zig

48 lines
1.3 KiB
Zig

const std = @import("std");
const common = @import("common.zig");
const data = @embedFile("inputs/puzzle.txt");
pub fn main() !void {
const stdout = std.io.getStdOut().writer();
const games = try common.parse(data);
defer games.deinit();
var sum: u32 = 0;
for (games.items) |game| {
var min_red: ?u32 = null;
var min_green: ?u32 = null;
var min_blue: ?u32 = null;
for (game.sets.items) |set| {
for (set.items) |item| {
switch (item.color) {
.red => {
if (min_red == null or min_red.? < item.amount) {
min_red = item.amount;
}
},
.green => {
if (min_green == null or min_green.? < item.amount) {
min_green = item.amount;
}
},
.blue => {
if (min_blue == null or min_blue.? < item.amount) {
min_blue = item.amount;
}
},
}
}
}
const power = min_red.? * min_green.? * min_blue.?;
sum += power;
}
try stdout.print("{d}\n", .{sum});
}