diff options
author | Christian Segundo | 2022-12-05 17:00:08 +0100 |
---|---|---|
committer | Christian Segundo | 2022-12-05 22:16:11 +0100 |
commit | 061a5bae272f45db6dcde99746922735f9769d25 (patch) | |
tree | e4dd9b6d903930c5c1b76286b4a08beea6f59162 /day-3/main.zig | |
parent | 8817203517907ef4248bde7474e6fb566515d6a7 (diff) | |
download | advent-of-zig-2022-061a5bae272f45db6dcde99746922735f9769d25.tar.gz |
add day 5
Diffstat (limited to 'day-3/main.zig')
-rw-r--r-- | day-3/main.zig | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/day-3/main.zig b/day-3/main.zig deleted file mode 100644 index 57057bf..0000000 --- a/day-3/main.zig +++ /dev/null @@ -1,46 +0,0 @@ -const std = @import("std"); - -pub fn puzzle_1(input: []const u8) u16 { - var iter = std.mem.split(u8, input, "\n"); - - var count: u16 = 0; - while (iter.next()) |line| { - var p1: u64 = 0; - var p2: u64 = 0; - - for (line[0 .. line.len / 2]) |_, i| { - p1 |= @as(u64, 1) << @intCast(u6, line[i] - 65); // 65 == 'A' - p2 |= @as(u64, 1) << @intCast(u6, line[i + line.len / 2] - 65); - } - - count += char_to_priority(@intCast(u8, 65 + 63) - @clz(p1 & p2)); - } - - return count; -} - -pub fn puzzle_2(input: []const u8) u16 { - var iter = std.mem.split(u8, input, "\n"); - - var count: u16 = 0; - mainLoop: while (true) { - var parts = std.mem.zeroes([3]u64); - - for (parts) |*p| { - const line = iter.next() orelse break :mainLoop; - for (line) |_, i| { - p.* |= @as(u64, 1) << @intCast(u6, line[i] - 65); - } - } - - count += char_to_priority(@intCast(u8, 65 + 63) - @clz(parts[0] & parts[1] & parts[2])); - } - - return count; -} - -fn char_to_priority(char: u8) u8 { - if (char >= 65 and char <= 90) - return char - 38; - return char - 96; -} |