const std = @import("std");
const common = @import("common.zig");
const alloc = std.heap.page_allocator;
const Buffer = std.ArrayList(u8);

const data = @embedFile("inputs/puzzle.txt");

pub fn main() !void {
    const stdout = std.io.getStdOut().writer();

    const races = try common.parse(data);
    defer races.deinit();

    const time = try concat_numbers(races.times.items);
    const record = try concat_numbers(races.distances.items);

    const nums_beat = common.calculate(time, record);

    try stdout.print("{d}\n", .{nums_beat});
}

fn concat_numbers(nums: []const u32) !u64 {
    var buf = Buffer.init(alloc);
    defer buf.deinit();

    for (nums) |race_times| {
        const segment = try std.fmt.allocPrint(alloc, "{d}", .{race_times});
        try buf.appendSlice(segment);
    }

    const num = try std.fmt.parseInt(u64, buf.items, 10);

    return num;
}