diff options
| author | Nic Gaffney <gaffney_nic@protonmail.com> | 2025-12-02 16:12:16 -0600 |
|---|---|---|
| committer | Nic Gaffney <gaffney_nic@protonmail.com> | 2025-12-02 16:12:16 -0600 |
| commit | c4579c04904d1f72663950d2fd486dc81941b42f (patch) | |
| tree | d2dbe6175951148477643860c554b776fba8cf88 | |
| parent | 0ccf10fd7ce7e8b6aff65a3bd8d4fb7bfb62ac57 (diff) | |
| download | aoc25-c4579c04904d1f72663950d2fd486dc81941b42f.tar.gz | |
cleaned up day 1
| -rw-r--r-- | day1/zig/src/main.zig | 36 |
1 files changed, 10 insertions, 26 deletions
diff --git a/day1/zig/src/main.zig b/day1/zig/src/main.zig index 6520d5f..3687178 100644 --- a/day1/zig/src/main.zig +++ b/day1/zig/src/main.zig @@ -10,9 +10,16 @@ pub fn main() !void { } fn problem(input: []const u8) !struct { u64, u64 } { - const lines: mem.TokenIterator(u8, .scalar) = mem.tokenizeScalar(u8, input, '\n'); - const part1: u64 = try p1(lines); - const part2: u64 = try p2(lines); + var lines: mem.TokenIterator(u8, .scalar) = mem.tokenizeScalar(u8, input, '\n'); + var part1: u64 = 0; + var part2: u64 = 0; + var pos: u32 = 50; + while (lines.next()) |line| { + const n = try parseline(line); + part2 += countzeros(pos, n); + if (pos == 0) part1 += 1; + pos = rotatepos(pos, n); + } return .{ part1, part2 }; } @@ -40,29 +47,6 @@ fn countzeros(pos: u64, n: i64) u64 { return zeros; } -fn p1(constLines: mem.TokenIterator(u8, .scalar)) !u64 { - var pos: u32 = 50; - var zeros: u64 = 0; - var lines = constLines; - while (lines.next()) |line| { - pos = rotatepos(pos, try parseline(line)); - if (pos == 0) zeros += 1; - } - return zeros; -} - -fn p2(constLines: mem.TokenIterator(u8, .scalar)) !u64 { - var pos: u32 = 50; - var zeros: u64 = 0; - var lines = constLines; - while (lines.next()) |line| { - const n = try parseline(line); - zeros += countzeros(pos, n); - pos = rotatepos(pos, n); - } - return zeros; -} - test "Sample Input" { const input: []const u8 = @embedFile("input_sample.txt"); const part1, const part2 = try problem(input); |
