gpt4 book ai didi

c# - 种子随机绘制二维网格

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:08:55 25 4
gpt4 key购买 nike

这已经困扰了我几个小时,所以我想知道是否有人可以帮助我,因为我可能以错误的方式思考这个问题。

我希望能够从具有无限宽度和高度的网格上的一组 x 和 y 坐标中获取一个 bool 值。还有其他限制,沿着 x 轴,两个真值之间至少需要 n 个位置,我还需要知道从 0,0 到 x,y 的区域中真值的数量。

给定 getTrueCoordinatesInArea 的区域的宽度和高度等于 x 和 y,因为它的区域是从 0,0 到 x,y 创建的

如果这是有道理的..

例如:

value = coordinateContainsTrue( x, y );//return true or false.
total = getTrueCoordinatesInArea( x , y );//Returns the total true values inside the area.

编辑:这会产生种子。

最佳答案

我不是很清楚您需要什么,但我认为这听起来像是一个很好且有趣的练习。我希望这是你想要的。 =) 它没有按照我想要的方式编码。宁愿使用 bool[,] 数组,但不知道如何使它动态化,也不想为此编写我自己的类,但也许我应该这样做。

但是,这个解决方案应该可行。

private List<List<bool>> grid = new List<List<bool>>();

private int N = 4;

Random randomNumberGenerator = new Random();

private bool getRandomBoolean()
{
return this.randomNumberGenerator.Next(0, 2) == 1;
}

private void testProgram()
{
var containsTrue = coordinateContainsTrue(0, 10);
var total = getTrueCoordinatesInArea(14, 2);
var isTrue = coordinateIsTrue(15, 11);
}

private bool coordinateIsTrue(int x, int y)
{
expandGridOfNeeded(x, y);

return grid[x][y];
}

private bool coordinateContainsTrue(int x, int y)
{
expandGridOfNeeded(x, y);

for (int xTemp = 0; xTemp < x; xTemp++) // Loop columns
{
for (int yTemp = 0; yTemp < y; yTemp++) // Loop rows
{
if (grid[xTemp][yTemp])
return true; // Return true if any true was found
}
}

return false;
}

private int getTrueCoordinatesInArea(int x, int y)
{
expandGridOfNeeded(x, y);

var total = 0;

for (int xTemp = 0; xTemp < x; xTemp++) // Loop columns
{
for (int yTemp = 0; yTemp < y; yTemp++) // Loop rows
{
if (grid[xTemp][yTemp])
total++; // Increase count if true was found
}
}

return total;
}

private void expandGridOfNeeded(int x, int y)
{
if (x < 0 || y < 0)
return;

// Add needed columns
while (grid.Count <= x)
{
var column = new List<bool>();

// Only add rows if the others have rows
if (grid.Count > 0)
{
while (column.Count < grid[0].Count)
{
// Check if legal to add a true value, if it is then add random else add false
bool forceFalseValue = false;
for (int i = grid.Count - 1; i > grid.Count + N && forceFalseValue == false; i--)
{
forceFalseValue = grid[i][column.Count - 1];
}

column.Add(forceFalseValue ? false : getRandomBoolean());
}
}

grid.Add(column);
}

// Add needed rows
while (grid[0].Count <= y)
{
var counter = N;

foreach (var column in grid)
{
// Check if legal to add a true value, if it is then add random else add false
if (counter < N)
{
column.Add(false);
counter++;
}
else
{
var randomValue = getRandomBoolean();

if (randomValue)
counter = 0;
else
counter++;

column.Add(randomValue);
}
}
}
}

关于c# - 种子随机绘制二维网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14774303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com