# AoC 2020 - Day 13: Shuttle Search

Oh, back to algebra!

There was a time, when I was quite proud of my algebra skills. Unfortunately,
that was a long time ago, and I guess this is what happen when you do not
exercise :-)

Anyhow, the problem was interesting. In part 2 I immediately realized this was a
set of equations in modulo, but I had no idea on the strategy to solve them; so
I had to setup my own strategy.

In this case, the strategy involved solving the equations one by one, and then
increasing the modulo.

Once I find a time `t1`

solving an equation in modulo `m1`

, then any solution
for a second equation in `m2`

must also satisfy the condition `t2 == t1 (m1)`

.
And since `m1`

and `m2`

are prime (I did not check, but it looked so), then the
solution must satisfy both conditions in modulo `m1*m2`

.

From there, the implementation was quite straightforward, but not so much – I
was able to put few bugs here and there, that required some time to be ironed
out.

For instance, the actual input had an interesting difference from the sample
one: in the sample, all periods were higher than the desired time, while in the
actual input there were a couple of buses with period smaller than the desired
time. Obviously, I had a bug in my code, and I spent quite some time scratching
my head thinking why it worked in one case, but in the other not :)