Sudoku is a Japanese puzzle in which a player must use the integers 1 through 9 to fill in a 9x9 grid such that each row, column, and 3x3 sub-grid contains each of the nine digits exactly once. Initially, a few of the squares in the 9x9 grid will be pre-filled to ensure a single unique solution, and players then fill in the rest of the grid using constraint satisfaction, process of elimination, and other logic.

Puzzle complexity varies based on which squares are pre-filled. Easier puzzles usually have more of the grid pre-filled, while harder ones have less. When less of the grid is filled in, the rules of the puzzle impose fewer constraints on each square, making it more difficult to determine which digit should end up in each square. However, every sudoku is designed to always have one unique solution that can always be solved with logic. Guessing is never required.

The New York Times rates this sudoku puzzle as "medium" difficulty.

For this reason, computers are great at solving sudokus. Inefficient brute-force solvers are often coded up as part of programming assignments in school, but all kinds of SAT solvers exist in the wild too. Many of them even provide instructions that walk step-by-step from any starting sudoku state to its completed solution.

Of course, the more general n x n sudoku puzzle is NP-complete. And that fact made me realize just how big the world of sudokus is. In fact, even the sudoku layout is tweakable. Instead of the usual square grid layout, why not try a snowflake grid? The possibilities are literally endless.

A snowflake sudoku.
A 6-pointed star sudoku.
A 5-pointed star sudoku.
A 7-pointed star sudoku.
A hexagonal sudoku.

And once the 2D sudokus become trite, there's still more to explore! Try out the 3D versions!

A cubic sudoku.
A giant 3D sudoku.

Quite mesmerizing, aren't they?

I've enjoyed solving sudoku puzzles so much that I finally decided to try my hand at creating some too. Turns out, the process isn't difficult. First, I create a grid and fill it to completion, meeting all sudoku constraints. Then, one at a time, I erase a digit from the grid and re-solve the puzzle to ensure that no more than one solution exists. If multiple solutions ever exist, I put the digit back in, and then I can try removing another one or I can stop. The result? A sudoku, voilà!

By hand, all this solving and re-solving would be insane. But thank goodness for computers. They make creating new sudokus a piece of cake. Who knows where I would be without them!