aoc2022/day3/puzzle1.zig

51 lines
1.3 KiB
Zig

const std = @import("std");
const mem = std.mem;
const fmt = std.fmt;
const print = std.debug.print;
const input = @embedFile("input");
pub fn main() !void {
const checked_len : usize = 'z' + 1;
var checked = [_]bool{false} ** checked_len;
var total_points : usize = 0;
// Split the input
var input_iter = mem.split(u8, input, "\n");
while (input_iter.next()) |line| {
if (line.len == 0) continue;
const length = line.len;
// First Half
for (line[0..length / 2]) |letter| {
checked[letter] = true;
}
// Second Half
for (line[length / 2..]) |letter| {
if (checked[letter]) {
if (letter >= 'a' and letter <= 'z') {
total_points += letter % 'a' + 1;
//std.debug.print("{c}:{}\n", .{letter, letter % 'a' + 1});
}
if (letter >= 'A' and letter <= 'Z') {
total_points += letter % 'A' + 27;
//std.debug.print("{c}:{}\n", .{letter, letter % 'A' + 27});
}
// Only one item is repeated
break;
}
}
// Reset the checked letters
checked = [_]bool{false} ** checked_len;
}
std.debug.print("Points: {}\n", .{total_points});
}