48 lines
1.3 KiB
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});
|
|
}
|