# https://adventofcode.com/2020/day/13
|
|
using AdventOfCode
|
|
using Mods
|
|
|
|
t_str, buses_str = readlines("2020/data/day_13.txt")
|
|
time = parse(Int, t_str)
|
|
buses = map(x->x=="x" ? nothing : parse(Int, x), split(buses_str, ','))
|
|
|
|
function part_1()
|
|
wait, bus = min(map(x->(x*ceil(time / x), x), filter(!isnothing, buses))...)
|
|
(wait - time) * bus
|
|
end
|
|
@info part_1()
|
|
|
|
function part_2()
|
|
mods = map(k->Mod{buses[k]}(-(k-1)), filter(k->!isnothing(buses[k]), keys(buses)))
|
|
CRT(mods...).val
|
|
end
|
|
@info part_2()
|