🤖 AI Summary
In 2007 a public contrast emerged between Ron Jeffries’s multi‑post attempt to build a Sudoku solver using test‑driven development (TDD) and Peter Norvig’s compact Python solution. Jeffries became absorbed in designing and reworking data representations and low‑level tests for the 9×9 board (rows, columns, and 3×3 boxes), producing many lines of refactorings and little progress on actual solving. Norvig, by contrast, implemented constraint propagation plus simple depth‑first search in a few clear definitions—famously “7 definitions in 12 lines”—and solved puzzles efficiently with a minimalist representation. The ensuing discussion (picked up by Peter Seibel, Andrew Dalke and on reddit) flagged the divergent outcomes.
For the AI/ML community the episode is a useful cautionary tale: algorithmic insight and the right problem formulation often matter more than elaborate object models or exhaustive low‑level tests. When the solution approach is unknown, strict TDD can encourage premature and distracting focus on representations rather than core algorithms (constraint propagation, search heuristics). Practical takeaways: prototype algorithmic ideas quickly with simple, expressive data structures; use tests to lock in behavior once the solving strategy is clear; and balance software engineering discipline with exploratory coding when tackling research‑style or search/constraint problems common in AI.
Loading comments...
login to comment
loading comments...
no comments yet