查找最低值的坐标(2D数组)

时间:2016-01-31 00:10:03

标签: c# unity3d

我觉得我错过了一些非常明显的东西,但我似乎无法找到价值最低的数组对。

我有int[,] worldMapXY存储了二维地图,比如worldMapXY[0,0]worldMapXY[120,120]。 map的数组的所有值都是1(wall \ invalid)或0(path / valid)。

我正在编写一种方法,可以在八个基本方向之一中找到坐标以创建一个生成点。所以我也有int[,] validSpotArr,它有一个最接近我设置生成方向的地图边界的子集。墙/无效位置的值设置为9999,路径/有效位置的值设置为(x + y)。这是特定于左下角的,最接近[0,0],因此“BL”或“左下角”

        case "BL":

        for (int x = (int)border + 1; x < worldX + (int)border / 4; x++)
        {
            for (int y = (int)border + 1; y < worldY + (int)border / 4; y++) 
            {
                if (worldMapXY[x,y] = 0)
                {
                    validSpotArr[x,y] = x + y;
                }

                else
                {
                    validSpotArr[x,y] = 9999;
                }
            }
        }

我无法理解的是如何确定validSpotArr的坐标/索引,其中最低值是我可以将它们作为单独的x和y坐标传递给另一个函数(设置生成点)。我怀疑有一个lambda运算符可能会有所帮助,但我确实不理解lambdas。显然,这需要成为我的下一个研究点。

E.g。 - 如果validSpotArr[23, 45] = 68和68是最低值,我该如何设置x = 23和y = 45?

编辑:我试过乱搞这样的事情,但这不对:

    Array.IndexOf(validSpotArr, validSpotArr.Min());

1 个答案:

答案 0 :(得分:1)

虽然不完全是你问题的答案,但在严格的情况下,我可能会去寻找周期内的问题,即

html, body { height: 100%; }

除此之外,如果寻找某种更通用的解决方案,我可能只是展平该数组,索引转换的数学(nD&lt; =&gt; 1D)非常简单。