Finish day03, part 1
This commit is contained in:
parent
ee219fc9b2
commit
0413ad2b9f
2 changed files with 243 additions and 1 deletions
|
|
@ -1,7 +1,49 @@
|
|||
const std = @import("std");
|
||||
|
||||
pub const title = "Day 03";
|
||||
pub const title = "Day 03: Lobby";
|
||||
|
||||
pub fn run(_: std.mem.Allocator) !void {
|
||||
const input = @embedFile("./input/day03.txt");
|
||||
var lines = std.mem.tokenizeScalar(u8, input, '\n');
|
||||
|
||||
var accumulator: u32 = 0;
|
||||
|
||||
while (lines.next()) |line| {
|
||||
var first_digit: u8 = 0;
|
||||
var first_digit_index: usize = 0;
|
||||
for (line[0..line.len - 1], 0..) |c, i| {
|
||||
const digit = try std.fmt.charToDigit(c, 10);
|
||||
if (digit > first_digit) {
|
||||
first_digit = digit;
|
||||
first_digit_index = i;
|
||||
}
|
||||
}
|
||||
std.debug.print("first = {d}\n", .{first_digit});
|
||||
|
||||
var second_digit: u8 = 0;
|
||||
if (first_digit_index == line.len - 2) {
|
||||
const c = line[line.len - 1];
|
||||
second_digit = try std.fmt.charToDigit(c, 10);
|
||||
} else {
|
||||
for (line[first_digit_index + 1..]) |c| {
|
||||
const digit = try std.fmt.charToDigit(c, 10);
|
||||
if (digit > second_digit) {
|
||||
second_digit = digit;
|
||||
}
|
||||
}
|
||||
}
|
||||
std.debug.print("second = {d}\n", .{second_digit});
|
||||
|
||||
const joltage = first_digit * 10 + second_digit;
|
||||
accumulator += joltage;
|
||||
}
|
||||
|
||||
var buffer: [8]u8 = undefined;
|
||||
var stdout_writer = std.fs.File.stdout().writer(&buffer);
|
||||
const stdout = &stdout_writer.interface;
|
||||
|
||||
try stdout.print("{d}\n", .{accumulator});
|
||||
|
||||
try stdout.flush();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue