我觉得我错过了一些非常明显的东西,但我似乎无法找到价值最低的数组对。
我有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());
答案 0 :(得分:1)
虽然不完全是你问题的答案,但在严格的情况下,我可能会去寻找周期内的问题,即
html, body { height: 100%; }
除此之外,如果寻找某种更通用的解决方案,我可能只是展平该数组,索引转换的数学(nD&lt; =&gt; 1D)非常简单。