将谜题放入螺旋的算法

本文关键字:螺旋 算法 | 更新日期: 2023-09-27 18:11:36

我在写解谜游戏的算法。我用这种方式把谜题排成螺旋形:

[07][08][09][10]      
[06][01][02][11]
[05][04][03][12]
[16][15][14][13]

例子
  1. 拼图的位置[02]必须符合拼图的西部边缘[01]东部优势;
  2. 拼图的位置[06]必须适合其东边缘拼图[01]西边缘;它的南缘必须与拼图的北缘相吻合[05]。

我将有不可预测的谜题数量,我总是试图从中形成最大的正方形。
我创建了以下类和函数

 class Tile
        {
            private int north;
            private int east;
            private int south;
            private int west;
        }
        bool checkFit(Tile t, Tile[] R, int pos)
        {
            if (pos == 0)
                return true;
            return false;
            }
    }

在checkfit中,我将检查是否可以将puzzle作为数组的下一个元素。它得到我试图放置的瓷砖,数组填充到我想要填充的当前位置,以及第一个空位置(最后一个不需要,因为我将检查数组R中的第一个空元素,它现在只是函数的骨架)。

问题是我不能找出算法来检查n个瓷砖是否适合(n-1)条瓷砖边(哪一条?),如果有另一个瓷砖检查

将谜题放入螺旋的算法

问题是我不能找出算法来检查n块是否合适(n-1)条瓷砖边(哪条?)以及是否有另一个瓷砖要检查.

你在解决方案上遇到问题的原因是你的原型不能解决问题。

您需要跟踪tile的行和列,这就是全部。我假设变量是相邻的瓷砖,对吗?

所以贴图07应该与06、16、08和10相邻,对吗?

如果是这种情况,那么算法非常简单。