## Day 9
This day does not need any fancy idea. I just walk through the items to get the
lowest in first part.
In second part I start from every low point and collect every neighbour (and
neighbour of neighbours) which is lowert than 9 recursively. Already visited
points are stored in a `std.AutoHashMap(point, void)`. I collect the
basins to a `std.PriorityQueue`, so I do not have to sort them at the end. It is
probably useless, but was fun to use this data type too.
TODO: Using a `[100][100]bool` array for stroring the seen items might speed
things up.
## Day 10
TODO: There is a zig compiler error when I try to simplify the if statement.
This needs further investigation.
In the first part I just store the opening pairs in a `std.ArrayList(u8)`. I
quit parsing as soon as a pair mismatch occures and count the correspoinding
fail value.
In second part there is an other `std.ArryList()` for storing the completion
scores. The score is computed reading the first array backward.
## Day 11
I just used a `[10][10]u4` array for stroring the grid items. Zig has a neat
`+|=` operator, so the grid items will not overflow because of the continous
flashing. I just flash all the neighbours in 8 direction recursively.
The second part is very similar. I just check if every item in the grid is `0`
with `fullFlash()`. I break out from the infinite loop when it returns true.