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");
|
const std = @import("std");
|
||||||
|
|
||||||
pub fn main() !void {
|
pub fn part_one() void {
|
||||||
std.log.debug("test", .{});
|
|
||||||
var result: usize = 0;
|
var result: usize = 0;
|
||||||
var lines = std.mem.splitScalar(u8, input, '\n');
|
var lines = std.mem.splitScalar(u8, input, '\n');
|
||||||
while (lines.next()) |line| {
|
while (lines.next()) |line| {
|
||||||
@ -25,7 +24,53 @@ pub fn main() !void {
|
|||||||
unreachable;
|
unreachable;
|
||||||
};
|
};
|
||||||
result += d1*10 + d2;
|
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});
|
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");
|
const one = @import("1.zig");
|
||||||
|
|
||||||
pub fn main() !void {
|
pub fn main() !void {
|
||||||
try one.main();
|
one.part_two();
|
||||||
}
|
}
|
||||||
|
|
||||||
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());
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user