Assignment: Model the rules of Chess. Design the code with the
flexibility to easily add new types of pieces with unique movements. The
goal is to create a shared core model that can also be used for other
board games, such as Checkers, Tic-Tac-Toe, and similar.
⚠️ Spoiler Alert ⚠️: This is a solution to exercise 2.13 of book "Software Design for Flexibility."1
🐰🕳️ ... What started as a whiteboard discussion sent me down a rabbit-hole to attempt
a functional and (hopefully) simple implementation... then document it, then
prepare it for a presentation, add visualizations, notebooks, implement a
code-stepper, ...