2 个版本

0.1.1 2022年5月3日
0.1.0 2022年5月2日

#379游戏

MIT 许可证

23KB
341

yasgs


关于

又一个数独游戏求解器

这个库将解决数独,但它不仅适用于“标准”9x9 数独,
还适用于 4x4、16x16、25x25、36x36 和 49x49 数独。


使用方法

该库发布了一个名为 solve 的函数,它接受两个参数

  • 一个输入字符串字面量,描述数独
  • 一个 usize 类型的数字,指定应生成多少个解决方案(如果可能的话)

结果将重用输入的格式(例如:边框、换行符、空格将被保留)。
使用此“字母表”来指定单元格的状态(您也可以使用'0'代替'.')
.123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYXZ

将 yasgs 添加到您的项目的 Cargo.toml 中

fn main() {
    println!("Solutions found:");
    for solution in yasgs::solve("34.. 12.. ...3 ....", 5) {
        // there are only 3 solutions
        println!("  {}", solution);    
    }

    let sudoku = "  6 . .  . . .  . . 1
    . 2 7  6 9 .  . . .
    . . 8  . . .  . 3 7
   
    . . .  5 . .  8 . .
    . . 5  9 . 7  1 . .
    . . 6  . . 2  . . .
   
    8 9 .  . . .  7 . .
    . . .  . 8 6  9 1 .
    3 . .  . . .  . . 2
   ";
   println!("\nSudoku:\n  {}", &sudoku);
   for solution in yasgs::solve(&sudoku, 1) {
    println!("Solution:\n  {}", solution);    
    }

        let sudoku = "╔═══════════╦═══════════╦═══════════╗
  ║ 5 │ . │ . ║ . │ . │ 2 ║ . │ . │ . ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ . │ . │ . ║ . │ . │ . ║ 3 │ 9 │ . ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ 2 │ . │ 8 ║ 4 │ . │ 6 ║ . │ . │ . ║
  ╠═══════════╬═══════════╬═══════════╣
  ║ . │ 9 │ . ║ 5 │ 3 │ . ║ . │ . │ . ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ . │ 6 │ 5 ║ . │ . │ . ║ . │ . │ 8 ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ . │ 8 │ . ║ . │ . │ . ║ 9 │ . │ 3 ║
  ╠═══════════╬═══════════╬═══════════╣
  ║ 6 │ . │ 4 ║ . │ . │ . ║ 7 │ . │ . ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ . │ . │ . ║ . │ . │ . ║ 2 │ 1 │ . ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ . │ . │ . ║ 2 │ 7 │ 4 ║ . │ . │ . ║
  ╚═══════════╩═══════════╩═══════════╝";
   println!("\nSudoku:\n  {}", &sudoku);
   for solution in yasgs::solve(&sudoku, 1) {
    println!("Solution:\n  {}", solution);    
    }
}

然后将创建此输出

Solutions found:
  3412 1234 2143 4321
  3412 1234 4123 2341
  3421 1234 2143 4312

Sudoku:
    6 . .  . . .  . . 1
    . 2 7  6 9 .  . . .
    . . 8  . . .  . 3 7
   
    . . .  5 . .  8 . .
    . . 5  9 . 7  1 . .
    . . 6  . . 2  . . .
   
    8 9 .  . . .  7 . .
    . . .  . 8 6  9 1 .
    3 . .  . . .  . . 2
   
Solution:
    6 5 3  4 7 8  2 9 1
    1 2 7  6 9 3  5 4 8
    9 4 8  1 2 5  6 3 7
   
    2 3 9  5 6 1  8 7 4
    4 8 5  9 3 7  1 2 6
    7 1 6  8 4 2  3 5 9
   
    8 9 2  3 1 4  7 6 5
    5 7 4  2 8 6  9 1 3
    3 6 1  7 5 9  4 8 2


Sudoku:
  ╔═══════════╦═══════════╦═══════════╗
  ║ 5....2... ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ ......39. ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ 2.84.6... ║
  ╠═══════════╬═══════════╬═══════════╣
  ║ .9.53.... ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ .65.....8 ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ .8....9.3 ║
  ╠═══════════╬═══════════╬═══════════╣
  ║ 6.4...7.. ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ ......21. ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ ...274... ║
  ╚═══════════╩═══════════╩═══════════╝
Solution:
  ╔═══════════╦═══════════╦═══════════╗
  ║ 579312486 ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ 146857392 ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ 238496571 ║
  ╠═══════════╬═══════════╬═══════════╣
  ║ 491538627 ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ 365729148 ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ 782641953 ║
  ╠═══════════╬═══════════╬═══════════╣
  ║ 624185739 ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ 857963214 ║
  ║───┼───┼───║───┼───┼───║───┼───┼───║
  ║ 913274865 ║
  ╚═══════════╩═══════════╩═══════════╝

问候

感谢所有参与 Rust、Cargo、Atom 或任何 crate 开发的所有人。

无运行时依赖