From c316d355c3458aedec7c7cb3420ddba05888e705 Mon Sep 17 00:00:00 2001 From: Christian Segundo Date: Thu, 1 Dec 2022 10:04:05 +0100 Subject: day 1 --- day-1/main_1.zig | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 day-1/main_1.zig (limited to 'day-1/main_1.zig') diff --git a/day-1/main_1.zig b/day-1/main_1.zig new file mode 100644 index 0000000..1a36e26 --- /dev/null +++ b/day-1/main_1.zig @@ -0,0 +1,55 @@ +const std = @import("std"); + +var gpa = std.heap.GeneralPurposeAllocator(.{}){}; +const allocator = gpa.allocator(); + +pub fn main() !void { + var path_buffer: [std.fs.MAX_PATH_BYTES]u8 = undefined; + const path = try std.fs.realpath("./input", &path_buffer); + + const file = try std.fs.openFileAbsolute(path, .{}); + defer file.close(); + + const file_size = (try file.stat()).size; + + const file_buffer = try file.readToEndAlloc(allocator, file_size); + defer allocator.free(file_buffer); + + var iter = std.mem.split(u8, file_buffer, "\n"); + var count: i32 = 0; + var max: [3]i32 = std.mem.zeroes([3]i32); + + while (iter.next()) |line| { + if (line.len == 0) { + const lowest_u = lowest(i32, &max); + if (count > max[lowest_u]) { + max[lowest_u] = count; + } + count = 0; + } else { + count += try std.fmt.parseInt(i32, line, 0); + } + } + + count = 0; + for (max) |v| { + count += v; + } + + std.debug.print("{d}\n", .{count}); +} + +fn lowest(comptime T: type, items: []const T) usize { + var lowest_u: usize = 0; + var previous: T = items[0]; + + for (items) |item, idx| { + if (item < previous) { + lowest_u = idx; + } + + previous = item; + } + + return lowest_u; +} -- cgit v1.2.3