1个不稳定版本
0.1.0 | 2023年12月23日 |
---|
#2292 in 算法
44KB
668 行
xcc:一种“带颜色的精确覆盖”求解器
这是Exact Cover的一种Rust实现,增加了对次要项进行着色的能力。该算法基于Donald Knuth的算法C,如《计算机编程艺术》第四卷“颜色控制覆盖”中所述。
求解器接受
- 一组主要项;
- 一组次要项;
- 一组选项,它们是主要项和次要项的子集。
求解器的任务是找到一个选项的子集,它
- 包含每个主要项一次,并且只一次,并且
- 对每个次要项进行一致的颜色分配。
选项可以包含带有或不带有颜色的次要项。如果次要项没有颜色,那么求解器将不会使用它超过一次(因此定义了一个“零或一”约束)。如果选项包含带有颜色的次要项,那么求解器可以使用它,并且可以使用相同的颜色多次,但不能使用未着色或不同颜色的。
求解器可以用来解决许多不同类型的问题
- 类似数独的谜题
- 形状谜题,例如“使用12个五角星形填充一个6x10的矩形”
- 文字谜题,例如“使用字典中的单词填充一个5x4的网格”
- 大多数Nikoli谜题
- 图着色
- 调度
- 等等!
在examples
目录中有一些示例。
许可证
根据以下任一许可证授权:
- Apache许可证版本2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
您可选择。
贡献
除非您明确声明,否则任何有意提交以包含在作品中的贡献,根据Apache-2.0许可证定义,将按上述方式双重许可,没有额外的条款或条件。
依赖项
~0.4–0.9MB
~20K SLoC