1个不稳定版本

0.1.0 2023年12月23日

#2292 in 算法

MIT/Apache

44KB
668

xcc:一种“带颜色的精确覆盖”求解器

这是Exact Cover的一种Rust实现,增加了对次要项进行着色的能力。该算法基于Donald Knuth的算法C,如《计算机编程艺术》第四卷“颜色控制覆盖”中所述。

求解器接受

  • 一组主要项
  • 一组次要项
  • 一组选项,它们是主要项和次要项的子集。

求解器的任务是找到一个选项的子集,它

  • 包含每个主要项一次,并且只一次,并且
  • 对每个次要项进行一致的颜色分配。

选项可以包含带有或不带有颜色的次要项。如果次要项没有颜色,那么求解器将不会使用它超过一次(因此定义了一个“零或一”约束)。如果选项包含带有颜色的次要项,那么求解器可以使用它,并且可以使用相同的颜色多次,但不能使用未着色或不同颜色的。

求解器可以用来解决许多不同类型的问题

  • 类似数独的谜题
  • 形状谜题,例如“使用12个五角星形填充一个6x10的矩形”
  • 文字谜题,例如“使用字典中的单词填充一个5x4的网格”
  • 大多数Nikoli谜题
  • 图着色
  • 调度
  • 等等!

examples目录中有一些示例。

许可证

根据以下任一许可证授权:

您可选择。

贡献

除非您明确声明,否则任何有意提交以包含在作品中的贡献,根据Apache-2.0许可证定义,将按上述方式双重许可,没有额外的条款或条件。

依赖项

~0.4–0.9MB
~20K SLoC