16 个版本
0.8.0 | 2023 年 12 月 4 日 |
---|---|
0.7.0 | 2018 年 10 月 19 日 |
0.6.2 | 2018 年 6 月 24 日 |
0.5.0 | 2018 年 2 月 14 日 |
0.1.3 | 2015 年 6 月 6 日 |
#48 在 游戏 中
96 每月下载量
在 3 crates 中使用
290KB
5.5K SLoC
数独
经典 9x9 数独的实用工具。
该库目前提供极快的数独求解、基本的数独生成器以及使用人类策略的原型求解器。快速求解器基于 jczsolve,据作者所知,这是目前世界上最快的数独求解算法之一。对算法进行了一些修改以进一步提高速度。
一些竞争性的求解器有 fsss2、SK_BFORCE2 和 tdoku。后者在求解没有唯一解或非常难的数独方面特别强大。还可以参考 tdoku 作者进行的基准测试: 基准测试 (撰写时的结果)。
策略求解器能够应用一些简单的策略,包括裸单、隐藏单、锁定候选、裸和隐藏子集(对、三元、四元)以及基本鱼(X-Wing、Swordfish、Jellyfish)。有关这些策略的说明以及其他信息可以在 http://www.sudokuwiki.org/Strategy_Families 找到。
未来的目标是扩展和进一步优化策略求解器,以便大多数数独都可以进行评级、提示和解释求解路径。有了对数独进行评级的能力,还可以生成任何所需难度的谜题。
示例
use sudoku::Sudoku;
// Sudokus can be created from &str's in both block or line formats or directly from bytes.
// here, an example in line format
let sudoku_line = "...2...633....54.1..1..398........9....538....3........263..5..5.37....847...1...";
let sudoku = Sudoku::from_str_line(sudoku_line).unwrap();
// Solve, print or convert the sudoku to another format
if let Some(solution) = sudoku.solution() {
// print the solution in line format
println!("{}", solution);
// or return it as a byte array
let cell_contents: [u8; 81] = solution.to_bytes();
}
依赖项
~0.5–1.1MB
~24K SLoC