You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
999 B
Zig
47 lines
999 B
Zig
const input = @embedFile("input.txt");
|
|
const std = @import("std");
|
|
|
|
|
|
pub fn main() !void {
|
|
|
|
var it = std.mem.tokenize(u8, input, "\n");
|
|
var busses:[10]u32 = std.mem.zeroes([10:0]u32);
|
|
var i: u32 = 0;
|
|
|
|
while(it.next())
|
|
|line|
|
|
:(i+=1)
|
|
{
|
|
busses[i] = (try std.fmt.parseInt(u32, line, 10));
|
|
}
|
|
|
|
std.debug.print("Busses:\n", .{});
|
|
for(busses)|bus|{
|
|
std.debug.print("{d}\n", .{bus});
|
|
}
|
|
|
|
const start: u32 = 1000391;
|
|
var n: u32 = start;
|
|
var found = false;
|
|
|
|
|
|
while(n > 0 and !found):(n+=1){
|
|
|
|
if(n % 1000 == 0)
|
|
std.debug.print("Tick: {d}\n", .{n});
|
|
|
|
for(busses)|bus|{
|
|
//skip
|
|
if(bus == 0){
|
|
continue;
|
|
}
|
|
|
|
if(n % bus == 0){
|
|
found = true;
|
|
std.debug.print("Found! bus {d}, tick {d}, wait {d}, answer {d}\n", .{bus, n, n - start, (n-start)*bus});
|
|
break;
|
|
}
|
|
|
|
}
|
|
}
|
|
} |