The Sudoku Affair: Two Approaches to Software Design
2025-02-05

This article recounts the experiences of Ron Jeffries and Peter Norvig in building Sudoku solvers. Jeffries, employing an incremental design approach, started with a simple List[Option[Int]] representation, iteratively refining it until completion. However, the resulting code was verbose and lacked elegance. Norvig, leveraging his expertise in search algorithms, used a Map[Coord, Set[Int]] representation, resulting in concise and efficient code that showcased constraint propagation. The article contrasts these design philosophies, highlighting the impact of domain knowledge on coding style and prompting reflection on software design methodologies.
Development
programming philosophies