Skip to content

sunsided/sudoku2-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

77 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Sudoku Solver, take 2

codecov

Another take at Sudoku solving in Rust. This is a weekend-ish remake of my previous pet project at sunsided/rust-sudoku-solver. Unlike the previous experiment, this solver correctly solves Hypersudokus and requires fewer branches. Internally, value candidates and indexes are encoded via 16- and 128-bit bitsets (ValueBitSet, IndexBitSet), reducing the overhead for constructing and testing hashsets.

Currently implemented strategies are Naked Singles, Hidden Singles, Naked Twins, Hidden Twins and X-Wings. Each additional strategy comes with its own overhead and most of the time, simply running a trial-and-error branching strategy performs best in terms of wall clock time.

To show the available options for the example, execute:

cargo run --example solver -- --help

To run the default example with debug output, execute:

RUST_LOG=debug cargo run --release --example solver

Individual strategies can be disabled. To run the default example without the Hidden Twins strategy, execute:

cargo run --release --example solver --no-hidden-twins

Set the log level to trace for more fine-grained information.

Sudoku example

For reference, here's an example puzzle from the Wikipedia Sudoku page:

Initial State Solution

The solver's output is shown below. To run, execute:

$ cargo run --release --example solver -- --sudoku

For the code, see src/example_games/sudoku.rs.

Other board variations with known Hidden Twins or X-Wings are available with:

$ cargo run --release --example solver -- --sudoku-ht
$ cargo run --release --example solver -- --sudoku-xwing
$ cargo run --release --example solver -- --sudoku-hardest

Cell groups

β”Œβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”
β”‚ A Β· A Β· A β”‚ B Β· B Β· B β”‚ C Β· C Β· C β”‚ 
β”œΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”€
β”‚ A Β· A Β· A β”‚ B Β· B Β· B β”‚ C Β· C Β· C β”‚ 
β”œΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”€
β”‚ A Β· A Β· A β”‚ B Β· B Β· B β”‚ C Β· C Β· C β”‚ 
β”œβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€
β”‚ D Β· D Β· D β”‚ E Β· E Β· E β”‚ F Β· F Β· F β”‚ 
β”œΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”€
β”‚ D Β· D Β· D β”‚ E Β· E Β· E β”‚ F Β· F Β· F β”‚ 
β”œΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”€
β”‚ D Β· D Β· D β”‚ E Β· E Β· E β”‚ F Β· F Β· F β”‚ 
β”œβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€
β”‚ G Β· G Β· G β”‚ H Β· H Β· H β”‚ I Β· I Β· I β”‚ 
β”œΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”€
β”‚ G Β· G Β· G β”‚ H Β· H Β· H β”‚ I Β· I Β· I β”‚ 
β”œΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”€
β”‚ G Β· G Β· G β”‚ H Β· H Β· H β”‚ I Β· I Β· I β”‚ 
β””β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”˜

Initial state

β”Œβ”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚
β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚
β”‚ Β· Β· 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚
β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚
β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· 6 β”‚ 4 5 6 β”‚
β”‚ 7 8 9 β”‚ Β· Β· 9 β”‚ Β· 8 Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· 3 β”‚
β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚
β”‚ Β· 8 Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ Β· Β· 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 Β· Β· β”‚
β”‚ 4 Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· 8 Β· β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· 2 Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· 6 β”‚
β”‚ 7 Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚
β”‚ 4 5 6 β”‚ Β· Β· 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚
β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚
β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· 5 Β· β”‚
β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· 8 Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 Β· Β· β”‚ Β· Β· 9 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”˜

Solution

β”Œβ”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· 2 Β· β”‚
β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚ Β· 8 Β· β”‚ Β· Β· 9 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· 3 β”‚
β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚
β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚ Β· Β· 9 β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· 6 β”‚
β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚
β”‚ Β· Β· 9 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚ Β· Β· 9 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”˜

Nonomino example

For reference, here's an example Nonomino from the Wikipedia Sudoku page:

Initial State Solution

The solver's output is shown below. To run, execute:

$ cargo run --release --example solver -- --nonomino

For the code, see src/example_games/nonomino.rs.

Cell groups

β”Œβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”
β”‚ A Β· A Β· A β”‚ B Β· C Β· C β”‚ C Β· C Β· C β”‚ 
β”œΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”€
β”‚ A Β· A Β· A β”‚ B Β· B Β· B β”‚ C Β· C Β· C β”‚ 
β”œΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”€
β”‚ A Β· D Β· D β”‚ D Β· D Β· B β”‚ B Β· B Β· C β”‚ 
β”œβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€
β”‚ A Β· A Β· D β”‚ E Β· E Β· E β”‚ E Β· B Β· B β”‚ 
β”œΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”€
β”‚ D Β· D Β· D β”‚ D Β· E Β· F β”‚ F Β· F Β· F β”‚ 
β”œΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”€
β”‚ G Β· G Β· E β”‚ E Β· E Β· E β”‚ F Β· I Β· I β”‚ 
β”œβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€
β”‚ H Β· G Β· G β”‚ G Β· F Β· F β”‚ F Β· F Β· I β”‚ 
β”œΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”€
β”‚ H Β· H Β· H β”‚ G Β· G Β· G β”‚ I Β· I Β· I β”‚ 
β”œΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”ΌΒ·Β·Β·β”€
β”‚ H Β· H Β· H β”‚ H Β· H Β· G β”‚ I Β· I Β· I β”‚ 
β””β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”˜

Initial state

β”Œβ”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Β· Β· 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· 2 Β· β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚
β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ Β· Β· 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚
β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ 1 Β· Β· β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ Β· 2 Β· β”‚ 1 2 3 β”‚
β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚
β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ Β· Β· 9 β”‚ 7 8 9 β”‚ Β· 8 Β· β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚
β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· 5 Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚
β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ Β· 2 Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 Β· Β· β”‚ 1 2 3 β”‚
β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚
β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚
β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚
β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· 8 Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ Β· Β· 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚
β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 Β· Β· β”‚ 4 5 6 β”‚ Β· Β· 6 β”‚ 4 5 6 β”‚
β”‚ 7 8 9 β”‚ Β· 8 Β· β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 Β· Β· β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚
β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 Β· Β· β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚
β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ Β· Β· 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚
β”‚ Β· 5 Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 Β· Β· β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”˜

Solution

β”Œβ”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚
β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ 7 Β· Β· β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 6 β”‚ 4 Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· 6 β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· 9 β”‚ Β· 8 Β· β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· 5 Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚ Β· Β· 9 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”˜

Hypersudoku example

A Hypersudoku example. To run it, execute:

$ cargo run --release --example solver -- --hyper

For the code, see src/example_games/hypersudoku.rs.

Initial state

β”Œβ”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”
β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 Β· Β· β”‚ 1 2 3 β”‚
β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚
β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· 2 Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚
β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚
β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚
β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚
β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚
β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· 6 β”‚ Β· 5 Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚
β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ Β· Β· 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚
β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚
β”‚ 7 8 9 β”‚ 7 Β· Β· β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· 8 Β· β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚
β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚
β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚
β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚
β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· 8 Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚
β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚
β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ Β· Β· 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚ 1 2 3 β”‚
β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚ 4 5 6 β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚ 7 8 9 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”˜

Solution

β”Œβ”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚
β”‚ Β· Β· 9 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ 7 Β· Β· β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 6 β”‚
β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 6 β”‚ Β· 5 Β· β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚
β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚ Β· Β· 9 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· 3 β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ 4 Β· Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚ Β· Β· 9 β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 1 Β· Β· β”‚ Β· 2 Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· 3 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· 6 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 4 Β· Β· β”‚ Β· Β· Β· β”‚ Β· 5 Β· β”‚ Β· Β· Β· β”‚
β”‚ Β· Β· Β· β”‚ Β· Β· 9 β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ 7 Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· Β· Β· β”‚ Β· 8 Β· β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”˜