about summary refs log tree commit diff
path: root/aoc/2021/06/part-two.zig
diff options
context:
space:
mode:
Diffstat (limited to 'aoc/2021/06/part-two.zig')
-rw-r--r--aoc/2021/06/part-two.zig22
1 files changed, 22 insertions, 0 deletions
diff --git a/aoc/2021/06/part-two.zig b/aoc/2021/06/part-two.zig
new file mode 100644
index 0000000..72bf877
--- /dev/null
+++ b/aoc/2021/06/part-two.zig
@@ -0,0 +1,22 @@
+const parseUnsigned = std.fmt.parseUnsigned;
+const print = std.debug.print;
+const rotate = std.mem.rotate;
+const std = @import("std");
+const tokenize = std.mem.tokenize;
+
+const input = @embedFile("input");
+
+pub fn main() !void {
+    var timer = [_]usize{ 0 } ** 9;
+    defer print("{}\n", .{ @reduce(.Add, @as(@Vector(9, usize), timer)) });
+
+    var list = tokenize(input[0..input.len-1], ",");
+    while (list.next()) |i|
+        timer[try parseUnsigned(usize, i, 10)] += 1;
+
+    var i: usize = 0;
+    while (i < 256) : (i += 1) {
+        rotate(usize, timer[0..], 1);
+        timer[6] += timer[8];
+    }
+}