The third problem was a grid puzzle. Two long and twisting wires should be analyzed for
crossings. And the task was to return the crossing nearest to the starting point (and the
crossing with shortest steps from the starting point in part 2). For efficiency reasons
I decided to sacrifice compact code for repeating myself a bit. There is an overlap
between part 1 and part 2, but the solution is basically repeated twice. In the end it
solves the problem for my input in about 20 seconds.
My solution is here - but I am sure it can be done more efficiently…