2 个版本
0.1.1 | 2022年5月3日 |
---|---|
0.1.0 | 2022年5月2日 |
#379 在 游戏 中
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 ║ . │ . │ . ║
║───┼───┼───║───┼───┼───║───┼───┼───║
║ . │ . │ . ║ . │ . │ . ║ 3 │ 9 │ . ║
║───┼───┼───║───┼───┼───║───┼───┼───║
║ 2 │ . │ 8 ║ 4 │ . │ 6 ║ . │ . │ . ║
╠═══════════╬═══════════╬═══════════╣
║ . │ 9 │ . ║ 5 │ 3 │ . ║ . │ . │ . ║
║───┼───┼───║───┼───┼───║───┼───┼───║
║ . │ 6 │ 5 ║ . │ . │ . ║ . │ . │ 8 ║
║───┼───┼───║───┼───┼───║───┼───┼───║
║ . │ 8 │ . ║ . │ . │ . ║ 9 │ . │ 3 ║
╠═══════════╬═══════════╬═══════════╣
║ 6 │ . │ 4 ║ . │ . │ . ║ 7 │ . │ . ║
║───┼───┼───║───┼───┼───║───┼───┼───║
║ . │ . │ . ║ . │ . │ . ║ 2 │ 1 │ . ║
║───┼───┼───║───┼───┼───║───┼───┼───║
║ . │ . │ . ║ 2 │ 7 │ 4 ║ . │ . │ . ║
╚═══════════╩═══════════╩═══════════╝
Solution:
╔═══════════╦═══════════╦═══════════╗
║ 5 │ 7 │ 9 ║ 3 │ 1 │ 2 ║ 4 │ 8 │ 6 ║
║───┼───┼───║───┼───┼───║───┼───┼───║
║ 1 │ 4 │ 6 ║ 8 │ 5 │ 7 ║ 3 │ 9 │ 2 ║
║───┼───┼───║───┼───┼───║───┼───┼───║
║ 2 │ 3 │ 8 ║ 4 │ 9 │ 6 ║ 5 │ 7 │ 1 ║
╠═══════════╬═══════════╬═══════════╣
║ 4 │ 9 │ 1 ║ 5 │ 3 │ 8 ║ 6 │ 2 │ 7 ║
║───┼───┼───║───┼───┼───║───┼───┼───║
║ 3 │ 6 │ 5 ║ 7 │ 2 │ 9 ║ 1 │ 4 │ 8 ║
║───┼───┼───║───┼───┼───║───┼───┼───║
║ 7 │ 8 │ 2 ║ 6 │ 4 │ 1 ║ 9 │ 5 │ 3 ║
╠═══════════╬═══════════╬═══════════╣
║ 6 │ 2 │ 4 ║ 1 │ 8 │ 5 ║ 7 │ 3 │ 9 ║
║───┼───┼───║───┼───┼───║───┼───┼───║
║ 8 │ 5 │ 7 ║ 9 │ 6 │ 3 ║ 2 │ 1 │ 4 ║
║───┼───┼───║───┼───┼───║───┼───┼───║
║ 9 │ 1 │ 3 ║ 2 │ 7 │ 4 ║ 8 │ 6 │ 5 ║
╚═══════════╩═══════════╩═══════════╝
问候
感谢所有参与 Rust、Cargo、Atom 或任何 crate 开发的所有人。