From ee6c6e975dabc6c14f7e8e62e2de1551a431cc7a Mon Sep 17 00:00:00 2001 From: Christian Segundo Date: Sat, 3 Dec 2022 19:28:32 +0100 Subject: refactor to use a meta test --- day-3/main.zig | 37 +++++++++++++++++++++++++++---------- day-3/main_1.zig | 39 --------------------------------------- 2 files changed, 27 insertions(+), 49 deletions(-) delete mode 100644 day-3/main_1.zig (limited to 'day-3') diff --git a/day-3/main.zig b/day-3/main.zig index 4406a79..0bba2f3 100644 --- a/day-3/main.zig +++ b/day-3/main.zig @@ -1,15 +1,8 @@ const std = @import("std"); -const slurp = @import("util/file.zig").slurp; const dupl_values = @import("util/mem.zig").dupl_values; -var gpa = std.heap.GeneralPurposeAllocator(.{}){}; -const allocator = gpa.allocator(); - -pub fn main() !void { - const file_buffer = try slurp(allocator, "./input"); - defer allocator.free(file_buffer); - - var iter = std.mem.split(u8, file_buffer, "\n"); +pub fn puzzle_1(allocator: std.mem.Allocator, input: []u8) !u16 { + var iter = std.mem.split(u8, input, "\n"); var count: u16 = 0; while (iter.next()) |line| { @@ -28,7 +21,31 @@ pub fn main() !void { } } - std.debug.print("{d}\n", .{count}); + return count; +} + +pub fn puzzle_2(allocator: std.mem.Allocator, input: []u8) !u16 { + var iter = std.mem.split(u8, input, "\n"); + + var count: u16 = 0; + while (iter.next()) |line| { + const duplicates = try dupl_values( + u8, + allocator, + &[_][]const u8{ + line, + iter.next().?, + iter.next().?, + }, + ); + defer allocator.free(duplicates); + + for (duplicates) |char| { + count += char_to_priority(char); + } + } + + return count; } fn char_to_priority(char: u8) u8 { diff --git a/day-3/main_1.zig b/day-3/main_1.zig deleted file mode 100644 index d65161b..0000000 --- a/day-3/main_1.zig +++ /dev/null @@ -1,39 +0,0 @@ -const std = @import("std"); -const slurp = @import("util/file.zig").slurp; -const dupl_values = @import("util/mem.zig").dupl_values; - -var gpa = std.heap.GeneralPurposeAllocator(.{}){}; -const allocator = gpa.allocator(); - -pub fn main() !void { - const file_buffer = try slurp(allocator, "./input"); - defer allocator.free(file_buffer); - - var iter = std.mem.split(u8, file_buffer, "\n"); - - var count: u16 = 0; - while (iter.next()) |line| { - const duplicates = try dupl_values( - u8, - allocator, - &[_][]const u8{ - line, - iter.next().?, - iter.next().?, - }, - ); - defer allocator.free(duplicates); - - for (duplicates) |char| { - count += char_to_priority(char); - } - } - - std.debug.print("{d}\n", .{count}); -} - -fn char_to_priority(char: u8) u8 { - if (char >= 65 and char <= 90) - return char - 38; - return char - 96; -} -- cgit v1.2.3