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游戏

Download history 73/week @ 2024-04-22 31/week @ 2024-04-29 33/week @ 2024-05-06 23/week @ 2024-05-13 27/week @ 2024-05-20 48/week @ 2024-05-27 29/week @ 2024-06-03 158/week @ 2024-06-10 16/week @ 2024-06-17 29/week @ 2024-06-24 26/week @ 2024-07-01 27/week @ 2024-07-15 15/week @ 2024-07-22 31/week @ 2024-07-29 23/week @ 2024-08-05

96 每月下载量
3 crates 中使用

AGPL-3.0

290KB
5.5K SLoC

数独

Crates.io Status Build Status

经典 9x9 数独的实用工具。

该库目前提供极快的数独求解、基本的数独生成器以及使用人类策略的原型求解器。快速求解器基于 jczsolve,据作者所知,这是目前世界上最快的数独求解算法之一。对算法进行了一些修改以进一步提高速度。
一些竞争性的求解器有 fsss2SK_BFORCE2tdoku。后者在求解没有唯一解或非常难的数独方面特别强大。还可以参考 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