我在考虑创建一个程序,让我可以玩或解决 Slitherlink 谜题,例如 krazydad.com 上的谜题。它由 4、5、6、7 和 8 边的瓷砖组成。除了七边形瓷砖外,其他瓷砖似乎具有相同长度的边,连接两个七边形瓷砖之间的边(因此将五边形瓷砖连接到四边形瓷砖)具有约为正常长度的 70% 的边长。如下图所示,八边形被交替的五边形和六边形包围。这些通过六边形的远侧连接到其他图块。连通到五边形顶点的是连接到广场的小线条,然后在广场周围形成两个短边的七边形图形。我认为外边缘是通过省略距离中心太远的瓷砖来定义的。
对于数据结构,我认为需要连接所有节点的图形。我可以让用户单击以在最近的链接上放置实线,并且可以轻松检查循环或过多的线路进入节点。我还需要创建瓷砖并将线路与其相关联,其中内部线路分配给两个瓷砖,但被视为一条线路。
至于设置,我正在考虑手动计算点并定义重复瓷砖的最小集合(1 8、4 5、4 6、4 7 和 1 4),然后将它们放置在一起。放置时,我会检查每个我放置的对象的现有接近点,并在发现时将它们合并。然后,我需要检查重复线路并合并它们。
有没有更简单或更干净的方法来 A)生成平铺或 B)在平铺时合并节点和链接?
对于数据结构,我认为需要连接所有节点的图形。我可以让用户单击以在最近的链接上放置实线,并且可以轻松检查循环或过多的线路进入节点。我还需要创建瓷砖并将线路与其相关联,其中内部线路分配给两个瓷砖,但被视为一条线路。
至于设置,我正在考虑手动计算点并定义重复瓷砖的最小集合(1 8、4 5、4 6、4 7 和 1 4),然后将它们放置在一起。放置时,我会检查每个我放置的对象的现有接近点,并在发现时将它们合并。然后,我需要检查重复线路并合并它们。
有没有更简单或更干净的方法来 A)生成平铺或 B)在平铺时合并节点和链接?