I have been living more inside of notebooks, scribbling possible solutions to problems with my leaky pens, than actually implementing the solutions for the last 12 weeks almost. I always feel a bit cheeky when I do, as if I could be more productive if I actually just opened up a text editor and started bashing something together that should work. In some cases I open a python shell to hammer in the ideas and see if my numbers and ideas are actually sound. So, using python as a form of a sketch pad as well at times.
The problem with complicated solutions is that they can produce complicated problems, so trying to keep the complicated problems within a very testable contained shell can be time consuming. Ensuring your solutions are not wasting too much memory is also very time consuming in addition to making sure that they are doing as little work as possible to solve the particular problems.
Usually at the end of such exercises you are rich with some new insight into tackling similar problems, or using the methods created to improve how you solve common problems.
I am quite happy with what I have and I think it is quite clean. I have been trying to be diligent with code hygiene and making sure that I can keep coming back to it without getting lost, keep the problem fresh in mind so that I can keep improving on it. It is not finished and I have yet to write a number of unit tests before I can write it as good enough and move on.
I will be working actively over the weekend and hopefully be getting closer to the end of this particular race.