Peter Seibel's original post is worth reading in its entirety.

It's a decently balanced piece. It leaves room for various views, and its summation seems about right.

https://gigamonkeys.wordpress.com/2009/10/05/coders-unit-tes...

Or perhaps just use a language that's designed to solve those sorts of problems? In 14 lines of code.

https://www.swi-prolog.org/pldoc/man?section=clpfd-sudoku

Is there a similarly short/simple solution not using all of the built ins? Haven't worked with prolog in a while but should be easy enough with primitives (albeit with more duplication)?
Why not just

    blocks(Rows, Blocks), maplist(all_distinct, Blocks), maplist(label, Rows)
Some comments 2 months ago (15 points, 7 comments)

2012 (28 points, 9 comments) https://news.ycombinator.com/item?id=4434744

2010 (65 points, 48 comments) https://news.ycombinator.com/item?id=1221399

The one from a couple months ago is here: https://news.ycombinator.com/item?id=45733410
I remember implementing some of these

https://www.stolaf.edu/people/hansonr/sudoku/12rules.htm

With a simple array of unsigned int and bit operations like 20 years ago. It could solve a lot of puzzles within microseconds. Later I realized rules 1, 2, 5, 6 are pretty much the same.