day 1 part 2
This commit is contained in:
parent
9e5b6bc60f
commit
f1f95341c9
51
src/1.zig
51
src/1.zig
@ -1,7 +1,6 @@
|
||||
const std = @import("std");
|
||||
|
||||
pub fn main() !void {
|
||||
std.log.debug("test", .{});
|
||||
pub fn part_one() void {
|
||||
var result: usize = 0;
|
||||
var lines = std.mem.splitScalar(u8, input, '\n');
|
||||
while (lines.next()) |line| {
|
||||
@ -25,7 +24,53 @@ pub fn main() !void {
|
||||
unreachable;
|
||||
};
|
||||
result += d1*10 + d2;
|
||||
std.log.debug("{any}, {any}", .{d1, d2});
|
||||
}
|
||||
std.log.info("result: {d}", .{result});
|
||||
}
|
||||
|
||||
pub fn part_two() void {
|
||||
var result: usize = 0;
|
||||
var lines = std.mem.splitScalar(u8, input, '\n');
|
||||
while (lines.next()) |line| {
|
||||
const d1 = d1:{
|
||||
var i: usize = 0;
|
||||
while (i < line.len) {
|
||||
const c = line[i];
|
||||
if (c >= 48 and c <= 57) {
|
||||
break :d1 c - 48;
|
||||
}
|
||||
const slice = line[i..];
|
||||
var j: u8 = 0;
|
||||
for ([_][]const u8{"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}) |num| {
|
||||
if (std.mem.startsWith(u8, slice, num)) {
|
||||
break :d1 j;
|
||||
}
|
||||
j += 1;
|
||||
}
|
||||
i += 1;
|
||||
}
|
||||
unreachable;
|
||||
};
|
||||
const d2 = d2:{
|
||||
var i = line.len - 1;
|
||||
while (i >= 0) {
|
||||
const c = line[i];
|
||||
if (c >= 48 and c <= 57) {
|
||||
break :d2 c - 48;
|
||||
}
|
||||
const slice = line[0..i+1];
|
||||
var j: u8 = 0;
|
||||
for ([_][]const u8{"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}) |num| {
|
||||
if (std.mem.endsWith(u8, slice, num)) {
|
||||
break :d2 j;
|
||||
}
|
||||
j += 1;
|
||||
}
|
||||
i -= 1;
|
||||
}
|
||||
unreachable;
|
||||
};
|
||||
result += d1*10 + d2;
|
||||
}
|
||||
std.log.info("result: {d}", .{result});
|
||||
}
|
||||
|
11
src/main.zig
11
src/main.zig
@ -2,12 +2,5 @@ const std = @import("std");
|
||||
const one = @import("1.zig");
|
||||
|
||||
pub fn main() !void {
|
||||
try one.main();
|
||||
}
|
||||
|
||||
test "simple test" {
|
||||
var list = std.ArrayList(i32).init(std.testing.allocator);
|
||||
defer list.deinit(); // try commenting this out and see if zig detects the memory leak!
|
||||
try list.append(42);
|
||||
try std.testing.expectEqual(@as(i32, 42), list.pop());
|
||||
}
|
||||
one.part_two();
|
||||
}
|
Loading…
Reference in New Issue
Block a user