Recently I’ve had the pleasure of working with my colleague Frank Kelly on solving a modestly difficult problem in Python. As we used varying approaches, it was increasingly difficult to illustrate the differences among them. This was mainly due to the complexities in the solution itself, and the algorithms used in those solutions. I thought it’s a good time to separate out the approaches from our solutions using them, and that’s what sparked the idea for this series of posts.
In this series, we look at a few algorithms, and come up with a set of abstractions to use them effectively. We also look at various kinds of problems and useful abstractions to help solve them before moving on to other algorithms. We use python3 and typing information to make the source self-documenting where possible.
This post is an index into the series: