{"id":16162395,"url":"https://github.com/sunsided/sudoku2-rs","last_synced_at":"2026-03-01T02:05:56.432Z","repository":{"id":141993310,"uuid":"576757968","full_name":"sunsided/sudoku2-rs","owner":"sunsided","description":"Another take at Sudoku solving","archived":false,"fork":false,"pushed_at":"2024-05-11T17:33:07.000Z","size":463,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-24T16:36:42.762Z","etag":null,"topics":["artificial-intelligence","game-solver","hypersudoku","nonomino","rust","state-space-search","sudoku","sudoku-solver"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"eupl-1.2","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sunsided.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-10T22:04:20.000Z","updated_at":"2024-05-11T17:33:10.000Z","dependencies_parsed_at":"2024-10-27T19:17:10.411Z","dependency_job_id":"68c20751-0cad-40e2-a955-21735582f838","html_url":"https://github.com/sunsided/sudoku2-rs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sunsided/sudoku2-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunsided%2Fsudoku2-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunsided%2Fsudoku2-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunsided%2Fsudoku2-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunsided%2Fsudoku2-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sunsided","download_url":"https://codeload.github.com/sunsided/sudoku2-rs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunsided%2Fsudoku2-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29958424,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T01:47:18.291Z","status":"online","status_checked_at":"2026-03-01T02:00:07.437Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["artificial-intelligence","game-solver","hypersudoku","nonomino","rust","state-space-search","sudoku","sudoku-solver"],"created_at":"2024-10-10T02:29:58.634Z","updated_at":"2026-03-01T02:05:51.421Z","avatar_url":"https://github.com/sunsided.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sudoku Solver, take 2\n\n[![codecov](https://codecov.io/gh/sunsided/sudoku2-rs/graph/badge.svg?token=AZ7Q2JU140)](https://codecov.io/gh/sunsided/sudoku2-rs)\n\nAnother take at Sudoku solving in Rust. This is a weekend-ish remake of my previous pet project\nat [sunsided/rust-sudoku-solver](https://github.com/sunsided/rust-sudoku-solver).\nUnlike the previous experiment, this solver correctly solves Hypersudokus and requires fewer branches.\nInternally, value candidates and indexes are encoded via 16- and 128-bit bitsets ([ValueBitSet], [IndexBitSet]),\nreducing the overhead for constructing and testing hashsets.\n\nCurrently implemented strategies are [Naked Singles], [Hidden Singles], [Naked Twins], [Hidden Twins] and [X-Wings].\nEach additional strategy comes with its own overhead and most of the time, simply running a trial-and-error\nbranching strategy performs best in terms of wall clock time.\n\n[ValueBitSet]: src/value.rs\n[IndexBitSet]: src/index.rs\n\n[Naked Singles]: src/strategies/naked_singles.rs\n[Hidden Singles]: src/strategies/hidden_singles.rs\n[Naked Twins]: src/strategies/naked_twins.rs\n[Hidden Twins]: src/strategies/hidden_twins.rs\n[X-Wings]: src/strategies/xwing.rs\n\nTo show the available options for the example, execute:\n\n```bash\ncargo run --example solver -- --help\n```\n\nTo run the default example with debug output, execute:\n\n```bash\nRUST_LOG=debug cargo run --release --example solver\n```\n\nIndividual strategies can be disabled. To run the default example without the Hidden Twins strategy, execute:\n\n```bash\ncargo run --release --example solver --no-hidden-twins\n```\n\nSet the log level to `trace` for more fine-grained information.\n\n## Sudoku example\n\nFor reference, here's an example puzzle from the Wikipedia [Sudoku](https://en.wikipedia.org/wiki/Sudoku) page:\n\n| Initial State           | Solution                  |\n|-------------------------|---------------------------|\n| ![](.readme/puzzle.png) | ![](.readme/solution.png) |\n\nThe solver's output is shown below. To run, execute:\n\n```bash\n$ cargo run --release --example solver -- --sudoku\n```\n\nFor the code, see [`src/example_games/sudoku.rs`](src/example_games/sudoku.rs).\n\nOther board variations with known Hidden Twins or X-Wings are available with:\n\n```bash\n$ cargo run --release --example solver -- --sudoku-ht\n$ cargo run --release --example solver -- --sudoku-xwing\n$ cargo run --release --example solver -- --sudoku-hardest\n```\n\n### Cell groups\n\n```plain\n┌───┬───┬───┬───┬───┬───┬───┬───┬───┐\n│ A · A · A │ B · B · B │ C · C · C │ \n├···┼···┼···┼···┼···┼···┼···┼···┼···┤\n│ A · A · A │ B · B · B │ C · C · C │ \n├···┼···┼···┼···┼···┼···┼···┼···┼···┤\n│ A · A · A │ B · B · B │ C · C · C │ \n├───┼───┼───┼───┼───┼───┼───┼───┼───┤\n│ D · D · D │ E · E · E │ F · F · F │ \n├···┼···┼···┼···┼···┼···┼···┼···┼···┤\n│ D · D · D │ E · E · E │ F · F · F │ \n├···┼···┼···┼···┼···┼···┼···┼···┼···┤\n│ D · D · D │ E · E · E │ F · F · F │ \n├───┼───┼───┼───┼───┼───┼───┼───┼───┤\n│ G · G · G │ H · H · H │ I · I · I │ \n├···┼···┼···┼···┼···┼···┼···┼···┼···┤\n│ G · G · G │ H · H · H │ I · I · I │ \n├···┼···┼···┼···┼···┼···┼···┼···┼···┤\n│ G · G · G │ H · H · H │ I · I · I │ \n└───┴───┴───┴───┴───┴───┴───┴───┴───┘\n```\n\n### Initial state\n\n```plain\n┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐\n│ · · · │ · · 3 │ 1 2 3 │ 1 2 3 │ · · · │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │\n│ · 5 · │ · · · │ 4 5 6 │ 4 5 6 │ · · · │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │\n│ · · · │ · · · │ 7 8 9 │ 7 8 9 │ 7 · · │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ 1 2 3 │ 1 2 3 │ 1 · · │ · · · │ · · · │ 1 2 3 │ 1 2 3 │ 1 2 3 │\n│ · · 6 │ 4 5 6 │ 4 5 6 │ · · · │ · · · │ · 5 · │ 4 5 6 │ 4 5 6 │ 4 5 6 │\n│ · · · │ 7 8 9 │ 7 8 9 │ · · · │ · · 9 │ · · · │ 7 8 9 │ 7 8 9 │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 2 3 │ · · · │ · · · │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · · · │ 1 2 3 │\n│ 4 5 6 │ · · · │ · · · │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · 6 │ 4 5 6 │\n│ 7 8 9 │ · · 9 │ · 8 · │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · · · │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · · · │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · · 3 │\n│ · · · │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · · │\n│ · 8 · │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · · · │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ 1 2 3 │ 1 2 3 │ · · · │ 1 2 3 │ · · 3 │ 1 2 3 │ 1 2 3 │ 1 · · │\n│ 4 · · │ 4 5 6 │ 4 5 6 │ · · · │ 4 5 6 │ · · · │ 4 5 6 │ 4 5 6 │ · · · │\n│ · · · │ 7 8 9 │ 7 8 9 │ · 8 · │ 7 8 9 │ · · · │ 7 8 9 │ 7 8 9 │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · 2 · │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · · · │\n│ · · · │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · · │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · 6 │\n│ 7 · · │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · · · │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 2 3 │ · · · │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · 2 · │ · · · │ 1 2 3 │\n│ 4 5 6 │ · · 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · · │ · · · │ 4 5 6 │\n│ 7 8 9 │ · · · │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · · · │ · 8 · │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 2 3 │ 1 2 3 │ 1 2 3 │ · · · │ 1 · · │ · · · │ 1 2 3 │ 1 2 3 │ · · · │\n│ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 · · │ · · · │ · · · │ 4 5 6 │ 4 5 6 │ · 5 · │\n│ 7 8 9 │ 7 8 9 │ 7 8 9 │ · · · │ · · · │ · · 9 │ 7 8 9 │ 7 8 9 │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · · · │ 1 2 3 │ 1 2 3 │ · · · │ · · · │\n│ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · · │ 4 5 6 │ 4 5 6 │ · · · │ · · · │\n│ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · 8 · │ 7 8 9 │ 7 8 9 │ 7 · · │ · · 9 │\n└───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘\n```\n\n### Solution\n\n```plain\n┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐\n│ · · · │ · · 3 │ · · · │ · · · │ · · · │ · · · │ · · · │ 1 · · │ · 2 · │\n│ · 5 · │ · · · │ 4 · · │ · · 6 │ · · · │ · · · │ · · · │ · · · │ · · · │\n│ · · · │ · · · │ · · · │ · · · │ 7 · · │ · 8 · │ · · 9 │ · · · │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ · · · │ · 2 · │ 1 · · │ · · · │ · · · │ · · 3 │ · · · │ · · · │\n│ · · 6 │ · · · │ · · · │ · · · │ · · · │ · 5 · │ · · · │ 4 · · │ · · · │\n│ · · · │ 7 · · │ · · · │ · · · │ · · 9 │ · · · │ · · · │ · · · │ · 8 · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 · · │ · · · │ · · · │ · · 3 │ · · · │ · 2 · │ · · · │ · · · │ · · · │\n│ · · · │ · · · │ · · · │ · · · │ 4 · · │ · · · │ · 5 · │ · · 6 │ · · · │\n│ · · · │ · · 9 │ · 8 · │ · · · │ · · · │ · · · │ · · · │ · · · │ 7 · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ · · · │ · · · │ · · · │ · · · │ 1 · · │ · · · │ · 2 · │ · · 3 │\n│ · · · │ · 5 · │ · · · │ · · · │ · · 6 │ · · · │ 4 · · │ · · · │ · · · │\n│ · 8 · │ · · · │ · · 9 │ 7 · · │ · · · │ · · · │ · · · │ · · · │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ · 2 · │ · · · │ · · · │ · · · │ · · 3 │ · · · │ · · · │ 1 · · │\n│ 4 · · │ · · · │ · · 6 │ · · · │ · 5 · │ · · · │ · · · │ · · · │ · · · │\n│ · · · │ · · · │ · · · │ · 8 · │ · · · │ · · · │ 7 · · │ · · 9 │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ 1 · · │ · · 3 │ · · · │ · 2 · │ · · · │ · · · │ · · · │ · · · │\n│ · · · │ · · · │ · · · │ · · · │ · · · │ 4 · · │ · · · │ · 5 · │ · · 6 │\n│ 7 · · │ · · · │ · · · │ · · 9 │ · · · │ · · · │ · 8 · │ · · · │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ · · · │ 1 · · │ · · · │ · · 3 │ · · · │ · 2 · │ · · · │ · · · │\n│ · · · │ · · 6 │ · · · │ · 5 · │ · · · │ · · · │ · · · │ · · · │ 4 · · │\n│ · · 9 │ · · · │ · · · │ · · · │ · · · │ 7 · · │ · · · │ · 8 · │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · 2 · │ · · · │ · · · │ · · · │ 1 · · │ · · · │ · · · │ · · 3 │ · · · │\n│ · · · │ · · · │ · · · │ 4 · · │ · · · │ · · · │ · · 6 │ · · · │ · 5 · │\n│ · · · │ · 8 · │ 7 · · │ · · · │ · · · │ · · 9 │ · · · │ · · · │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · 3 │ · · · │ · · · │ · 2 · │ · · · │ · · · │ 1 · · │ · · · │ · · · │\n│ · · · │ 4 · · │ · 5 · │ · · · │ · · · │ · · 6 │ · · · │ · · · │ · · · │\n│ · · · │ · · · │ · · · │ · · · │ · 8 · │ · · · │ · · · │ 7 · · │ · · 9 │\n└───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘\n```\n\n## Nonomino example\n\nFor reference, here's an example Nonomino from the Wikipedia [Sudoku](https://en.wikipedia.org/wiki/Sudoku) page:\n\n| Initial State             | Solution                           |\n|---------------------------|------------------------------------|\n| ![](.readme/nonomino.png) | ![](.readme/nonomino-solution.png) |\n\nThe solver's output is shown below. To run, execute:\n\n```bash\n$ cargo run --release --example solver -- --nonomino\n```\n\nFor the code, see [`src/example_games/nonomino.rs`](src/example_games/nonomino.rs).\n\n### Cell groups\n\n```plain\n┌───┬───┬───┬───┬───┬───┬───┬───┬───┐\n│ A · A · A │ B · C · C │ C · C · C │ \n├···┼···┼···┼···┼···┼···┼···┼···┼···┤\n│ A · A · A │ B · B · B │ C · C · C │ \n├···┼···┼···┼···┼···┼···┼···┼···┼···┤\n│ A · D · D │ D · D · B │ B · B · C │ \n├───┼───┼───┼───┼───┼───┼───┼───┼───┤\n│ A · A · D │ E · E · E │ E · B · B │ \n├···┼···┼···┼···┼···┼···┼···┼···┼···┤\n│ D · D · D │ D · E · F │ F · F · F │ \n├···┼···┼···┼···┼···┼···┼···┼···┼···┤\n│ G · G · E │ E · E · E │ F · I · I │ \n├───┼───┼───┼───┼───┼───┼───┼───┼───┤\n│ H · G · G │ G · F · F │ F · F · I │ \n├···┼···┼···┼···┼···┼···┼···┼···┼···┤\n│ H · H · H │ G · G · G │ I · I · I │ \n├···┼···┼···┼···┼···┼···┼···┼···┼···┤\n│ H · H · H │ H · H · G │ I · I · I │ \n└───┴───┴───┴───┴───┴───┴───┴───┴───┘\n```\n\n### Initial state\n\n```plain\n┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐\n│ · · 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · · · │\n│ · · · │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 · · │\n│ · · · │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 2 3 │ 1 2 3 │ · 2 · │ 1 2 3 │ · · · │ 1 2 3 │ 1 · · │ 1 2 3 │ 1 2 3 │\n│ 4 5 6 │ 4 5 6 │ · · · │ 4 5 6 │ · · 6 │ 4 5 6 │ · · · │ 4 5 6 │ 4 5 6 │\n│ 7 8 9 │ 7 8 9 │ · · · │ 7 8 9 │ · · · │ 7 8 9 │ · · · │ 7 8 9 │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 2 3 │ 1 · · │ 1 2 3 │ · · · │ 1 2 3 │ · · · │ 1 2 3 │ · 2 · │ 1 2 3 │\n│ 4 5 6 │ · · · │ 4 5 6 │ · · · │ 4 5 6 │ · · · │ 4 5 6 │ · · · │ 4 5 6 │\n│ 7 8 9 │ · · · │ 7 8 9 │ · · 9 │ 7 8 9 │ · 8 · │ 7 8 9 │ · · · │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 2 3 │ 1 2 3 │ · · · │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · · · │ 1 2 3 │ 1 2 3 │\n│ 4 5 6 │ 4 5 6 │ · 5 · │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · 6 │ 4 5 6 │ 4 5 6 │\n│ 7 8 9 │ 7 8 9 │ · · · │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · · · │ 7 8 9 │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 2 3 │ · 2 · │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 · · │ 1 2 3 │\n│ 4 5 6 │ · · · │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · · │ 4 5 6 │\n│ 7 8 9 │ · · · │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · · · │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 2 3 │ 1 2 3 │ · · · │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · · · │ 1 2 3 │ 1 2 3 │\n│ 4 5 6 │ 4 5 6 │ · · · │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · · │ 4 5 6 │ 4 5 6 │\n│ 7 8 9 │ 7 8 9 │ · · 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · 8 · │ 7 8 9 │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 2 3 │ · · · │ 1 2 3 │ · · 3 │ 1 2 3 │ · · · │ 1 2 3 │ · · · │ 1 2 3 │\n│ 4 5 6 │ · · · │ 4 5 6 │ · · · │ 4 5 6 │ 4 · · │ 4 5 6 │ · · 6 │ 4 5 6 │\n│ 7 8 9 │ · 8 · │ 7 8 9 │ · · · │ 7 8 9 │ · · · │ 7 8 9 │ · · · │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 2 3 │ 1 2 3 │ · · · │ 1 2 3 │ 1 · · │ 1 2 3 │ · · · │ 1 2 3 │ 1 2 3 │\n│ 4 5 6 │ 4 5 6 │ 4 · · │ 4 5 6 │ · · · │ 4 5 6 │ · · · │ 4 5 6 │ 4 5 6 │\n│ 7 8 9 │ 7 8 9 │ · · · │ 7 8 9 │ · · · │ 7 8 9 │ · · 9 │ 7 8 9 │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · · · │\n│ · 5 · │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · · │\n│ · · · │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 · · │\n└───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘\n```\n\n### Solution\n\n```plain\n┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐\n│ · · 3 │ · · · │ · · · │ 1 · · │ · · · │ · · · │ · 2 · │ · · · │ · · · │\n│ · · · │ · 5 · │ · · · │ · · · │ · · · │ · · 6 │ · · · │ · · · │ 4 · · │\n│ · · · │ · · · │ · 8 · │ · · · │ · · 9 │ · · · │ · · · │ 7 · · │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ · · · │ · 2 · │ · · · │ · · · │ · · · │ 1 · · │ · · 3 │ · · · │\n│ 4 · · │ · · · │ · · · │ · 5 · │ · · 6 │ · · · │ · · · │ · · · │ · · · │\n│ · · · │ · · 9 │ · · · │ · · · │ · · · │ 7 · · │ · · · │ · · · │ · 8 · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ 1 · · │ · · 3 │ · · · │ · · · │ · · · │ · · · │ · 2 · │ · · · │\n│ · · 6 │ · · · │ · · · │ · · · │ · · · │ · · · │ 4 · · │ · · · │ · 5 · │\n│ · · · │ · · · │ · · · │ · · 9 │ 7 · · │ · 8 · │ · · · │ · · · │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 · · │ · · · │ · · · │ · · · │ · · · │ · 2 · │ · · · │ · · · │ · · 3 │\n│ · · · │ · · · │ · 5 · │ · · · │ 4 · · │ · · · │ · · 6 │ · · · │ · · · │\n│ · · · │ 7 · · │ · · · │ · 8 · │ · · · │ · · · │ · · · │ · · 9 │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ · 2 · │ · · · │ · · · │ · · · │ · · 3 │ · · · │ 1 · · │ · · · │\n│ · · · │ · · · │ · · 6 │ 4 · · │ · 5 · │ · · · │ · · · │ · · · │ · · · │\n│ · 8 · │ · · · │ · · · │ · · · │ · · · │ · · · │ 7 · · │ · · · │ · · 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · 2 · │ · · · │ · · · │ · · · │ · · 3 │ 1 · · │ · · · │ · · · │ · · · │\n│ · · · │ 4 · · │ · · · │ · · · │ · · · │ · · · │ · · · │ · 5 · │ · · 6 │\n│ · · · │ · · · │ · · 9 │ 7 · · │ · · · │ · · · │ · 8 · │ · · · │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ · · · │ · · · │ · · 3 │ · 2 · │ · · · │ · · · │ · · · │ 1 · · │\n│ · · · │ · · · │ · · · │ · · · │ · · · │ 4 · · │ · 5 · │ · · 6 │ · · · │\n│ · · 9 │ · 8 · │ 7 · · │ · · · │ · · · │ · · · │ · · · │ · · · │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ · · 3 │ · · · │ · · · │ 1 · · │ · · · │ · · · │ · · · │ · 2 · │\n│ · · · │ · · · │ 4 · · │ · · 6 │ · · · │ · 5 · │ · · · │ · · · │ · · · │\n│ 7 · · │ · · · │ · · · │ · · · │ · · · │ · · · │ · · 9 │ · 8 · │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ · · · │ 1 · · │ · 2 · │ · · · │ · · · │ · · 3 │ · · · │ · · · │\n│ · 5 · │ · · 6 │ · · · │ · · · │ · · · │ · · · │ · · · │ 4 · · │ · · · │\n│ · · · │ · · · │ · · · │ · · · │ · 8 · │ · · 9 │ · · · │ · · · │ 7 · · │\n└───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘\n```\n\n## Hypersudoku example\n\nA Hypersudoku example. To run it, execute:\n\n```bash\n$ cargo run --release --example solver -- --hyper\n```\n\nFor the code, see [`src/example_games/hypersudoku.rs`](src/example_games/hypersudoku.rs).\n\n### Initial state\n\n```plain\n┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐\n│ 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 │\n│ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · · │ 4 5 6 │\n│ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · · · │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 2 3 │ 1 2 3 │ · 2 · │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · · 3 │ · · · │\n│ 4 5 6 │ 4 5 6 │ · · · │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · · │ 4 · · │\n│ 7 8 9 │ 7 8 9 │ · · · │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · · · │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · · · │ 1 · · │ 1 2 3 │ 1 2 3 │ 1 2 3 │\n│ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · 5 · │ · · · │ 4 5 6 │ 4 5 6 │ 4 5 6 │\n│ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · · · │ · · · │ 7 8 9 │ 7 8 9 │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · · · │ · · · │ 1 2 3 │ 1 2 3 │\n│ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · 6 │ · 5 · │ 4 5 6 │ 4 5 6 │\n│ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · · · │ · · · │ 7 8 9 │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 2 3 │ · · · │ 1 2 3 │ · · 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · · · │ 1 2 3 │\n│ 4 5 6 │ · · · │ 4 5 6 │ · · · │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · · │ 4 5 6 │\n│ 7 8 9 │ 7 · · │ 7 8 9 │ · · · │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · 8 · │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 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 │\n│ 4 5 6 │ 4 5 6 │ · · · │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │\n│ 7 8 9 │ 7 8 9 │ · · · │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · · · │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │\n│ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · · │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │\n│ 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 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ · · · │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ · · · │ 1 2 3 │ 1 2 3 │\n│ · 5 · │ · · · │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ · · · │ 4 5 6 │ 4 5 6 │\n│ · · · │ · 8 · │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ · · 9 │ 7 8 9 │ 7 8 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ · · · │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │ 1 2 3 │\n│ · · 6 │ · · · │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │ 4 5 6 │\n│ · · · │ · · 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │ 7 8 9 │\n└───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘\n```\n\n### Solution\n\n```plain\n┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐\n│ · · · │ · · · │ · · · │ · · · │ · · 3 │ · 2 · │ · · · │ 1 · · │ · · · │\n│ · · · │ 4 · · │ · · 6 │ · · · │ · · · │ · · · │ · · · │ · · · │ · 5 · │\n│ · · 9 │ · · · │ · · · │ · 8 · │ · · · │ · · · │ 7 · · │ · · · │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ 1 · · │ · · · │ · 2 · │ · · · │ · · · │ · · · │ · · · │ · · 3 │ · · · │\n│ · · · │ · 5 · │ · · · │ · · 6 │ · · · │ · · · │ · · · │ · · · │ 4 · · │\n│ · · · │ · · · │ · · · │ · · · │ · · 9 │ 7 · · │ · 8 · │ · · · │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ · · 3 │ · · · │ · · · │ · · · │ 1 · · │ · 2 · │ · · · │ · · · │\n│ · · · │ · · · │ · · · │ 4 · · │ · 5 · │ · · · │ · · · │ · · · │ · · 6 │\n│ 7 · · │ · · · │ · 8 · │ · · · │ · · · │ · · · │ · · · │ · · 9 │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ 1 · · │ · · · │ · · · │ · 2 · │ · · · │ · · · │ · · · │ · · 3 │\n│ · · · │ · · · │ · · · │ · · · │ · · · │ · · 6 │ · 5 · │ 4 · · │ · · · │\n│ · 8 · │ · · · │ · · 9 │ 7 · · │ · · · │ · · · │ · · · │ · · · │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ · · · │ · · · │ · · 3 │ 1 · · │ · · · │ · · · │ · · · │ · 2 · │\n│ 4 · · │ · · · │ · 5 · │ · · · │ · · · │ · · · │ · · 6 │ · · · │ · · · │\n│ · · · │ 7 · · │ · · · │ · · · │ · · · │ · · 9 │ · · · │ · 8 · │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · 2 · │ · · · │ · · 3 │ · · · │ · · · │ · · · │ 1 · · │ · · · │ · · · │\n│ · · · │ · · 6 │ · · · │ · 5 · │ 4 · · │ · · · │ · · · │ · · · │ · · · │\n│ · · · │ · · · │ · · · │ · · · │ · · · │ · 8 · │ · · · │ 7 · · │ · · 9 │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · 3 │ · 2 · │ · · · │ · · · │ · · · │ · · · │ · · · │ · · · │ 1 · · │\n│ · · · │ · · · │ · · · │ · · · │ · · · │ · 5 · │ 4 · · │ · · 6 │ · · · │\n│ · · · │ · · · │ 7 · · │ · · 9 │ · 8 · │ · · · │ · · · │ · · · │ · · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ · · · │ · · · │ 1 · · │ · · · │ · · 3 │ · · · │ · 2 · │ · · · │\n│ · 5 · │ · · · │ 4 · · │ · · · │ · · 6 │ · · · │ · · · │ · · · │ · · · │\n│ · · · │ · 8 · │ · · · │ · · · │ · · · │ · · · │ · · 9 │ · · · │ 7 · · │\n├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤\n│ · · · │ · · · │ 1 · · │ · 2 · │ · · · │ · · · │ · · 3 │ · · · │ · · · │\n│ · · 6 │ · · · │ · · · │ · · · │ · · · │ 4 · · │ · · · │ · 5 · │ · · · │\n│ · · · │ · · 9 │ · · · │ · · · │ 7 · · │ · · · │ · · · │ · · · │ · 8 · │\n└───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunsided%2Fsudoku2-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsunsided%2Fsudoku2-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunsided%2Fsudoku2-rs/lists"}