{"id":13749344,"url":"https://github.com/shnarazk/sudoku_sat","last_synced_at":"2025-10-11T10:11:43.794Z","repository":{"id":97697052,"uuid":"267984287","full_name":"shnarazk/sudoku_sat","owner":"shnarazk","description":"Solving Sudoku variants with SAT solvers","archived":false,"fork":false,"pushed_at":"2024-02-01T17:18:33.000Z","size":216,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-05-22T22:33:35.161Z","etag":null,"topics":["rust","sat-solver","satisfiability","sudoku"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shnarazk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2020-05-30T00:58:24.000Z","updated_at":"2024-05-01T16:44:04.000Z","dependencies_parsed_at":"2024-02-10T14:05:02.735Z","dependency_job_id":"36ed98b4-92f4-4536-aa6b-3007d4e39b57","html_url":"https://github.com/shnarazk/sudoku_sat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shnarazk%2Fsudoku_sat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shnarazk%2Fsudoku_sat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shnarazk%2Fsudoku_sat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shnarazk%2Fsudoku_sat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shnarazk","download_url":"https://codeload.github.com/shnarazk/sudoku_sat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244682234,"owners_count":20492932,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["rust","sat-solver","satisfiability","sudoku"],"created_at":"2024-08-03T07:00:59.776Z","updated_at":"2025-10-11T10:11:38.774Z","avatar_url":"https://github.com/shnarazk.png","language":"Rust","funding_links":[],"categories":["Unclassified"],"sub_categories":["Libraries"],"readme":"# Solve Sudoku variants with SAT solvers\n\n## Sudoku 400x400\n\nunder consruction\n- https://github.com/hkociemba/sudokuNxM/tree/master/sudokus\n- http://forum.enjoysudoku.com/giant-sudoku-s-16x16-25x25-36x36-100x100-t6578-150.html#p269691\n\n## Sudoku 144x144\n\nSolved.\n\n```\ngit clone https://github.com/shnarazk/sudoku_sat.git\ncd sudoku_sat\ncargo run --bin sudoku144 --release \u003c sudoku144.txt\n```\n\n- [Rust製のSATソルバーで144x144のSudokuを解こう(my blog entry in Japanese)](https://shnarazk.github.io/2021/2021-01-17-sudoku144/)\n- https://github.com/shnarazk/sudoku_sat/discussions/4#discussioncomment-283483\n\n## Sudoku 100x100\n\n- https://github.com/shnarazk/sudoku_sat/discussions/4\n- [Reducing the space](https://github.com/shnarazk/sudoku_sat/commit/361c4a9d44c9b413dd6f9a1a87a5cb8c3a929344)\n\n## Sudoku 64\n\nSolved.\n\n```\ngit clone https://github.com/shnarazk/sudoku_sat.git\ncd sudoku_sat\ncargo run --bin sudoku64 --release\n```\n\n- [Rust製のSATソルバーで64x64のSudokuが解けるだろうか(my blog entry in Japanese)](https://shnarazk.github.io/2020/2020-12-18-sudoku64/)\n\n## Sudoku 25\n\nSolved.\n- [Rust製の「SATソルバーで25x25のナンプレが解けるだろうか」(my blog entry in Japanese)](https://shnarazk.github.io/2020/2020-08-19-sudoku25/)\n\n\n```\ngit clone https://github.com/shnarazk/sudoku_sat.git\ncd sudoku_sat\ncargo run --bin sudoku25 --release\n```\n\n## Miracle Sudoku\n\nSolved.\n- https://www.youtube.com/watch?v=cvEq_XkQg8U\n\n\n### Approach\n\n1. Preparation\n\n```rust\nstruct Pos { i: isize, j: isize };\nstruct Cell { pos: Pos, digit: usize, on: bool };\n```\n\n2. Generate Sudoku rules and extra rules\n\n```rust\nfor i in 1..=RANGE {\n    for j in 1..=RANGE {\n        let p = Pos::at(i, j);\n        for target_i in i..=RANGE {\n            for target_j in j..=RANGE {\n                 let t = Pos::at(target_i, target_j);\n                 for d in 1..=RANGE {\n                     rules.push(p.state(d, true).requires(t.state(d, false));\n                 }\n            }\n        }\n     }\n}\n```\n\n3. Convert the rules to a CNF\n\n4. Run SAT solver\n\n### Result, the only one result\n\n```plain\n$ cargo run --release\n    Finished release [optimized] target(s) in 0.00s\n     Running `target/release/miracle_sudoku`\n#rules: 22248\n4 8 3 7 2 6 1 5 9 \n7 2 6 1 5 9 4 8 3 \n1 5 9 4 8 3 7 2 6 \n8 3 7 2 6 1 5 9 4 \n2 6 1 5 9 4 8 3 7 \n5 9 4 8 3 7 2 6 1 \n3 7 2 6 1 5 9 4 8 \n6 1 5 9 4 8 3 7 2 \n9 4 8 3 7 2 6 1 5 \n\n$ \n```\n\n![](https://user-images.githubusercontent.com/997855/83323585-d5920000-a29a-11ea-9635-d5ac4bd152fa.png)\n\n### Stats\n\n```plain\n$ tokei\n-------------------------------------------------------------------------------\n Language            Files        Lines         Code     Comments       Blanks\n-------------------------------------------------------------------------------\n Markdown                1           56           56            0            0\n Rust                    5          281          239           30           12\n TOML                    1           11            7            1            3\n-------------------------------------------------------------------------------\n Total                   7          348          302           31           15\n-------------------------------------------------------------------------------\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshnarazk%2Fsudoku_sat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshnarazk%2Fsudoku_sat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshnarazk%2Fsudoku_sat/lists"}