gpt4 book ai didi

c# - 为每个可能的排列填充 3x3 位立方体

转载 作者:行者123 更新时间:2023-11-30 14:21:27 25 4
gpt4 key购买 nike

我想构建一个包含位( bool )值的 3x3 立方体集合。我希望该集合包含所有可能的值组合。因此,对于 27 位,每个位打开或关闭的所有可能组合。

var dimension = 3;
var cubes = new List<bool[,,]>();

// iterate from (0,0,0) to (3,3,3)
var cube = new bool[dimension, dimension, dimension];
for (int i = 0; i < dimension; i++)
{
for (int j = 0; j < dimension; j++)
{
for (int k = 0; k < dimension; k++)
{
cube[i, j, k] = true;
}
}
}
cubes.Add(cube);

这将创建一个立方体,其中每个单元格都设置为 true。我如何创建所有其他立方体来表示每个可能的排列?

最佳答案

在我看来,在这里创建立方体的整个想法是多余的,而且大量在内存方面效率低下。

当您问“第 N 个 3x3 立方体的位置中的位是什么”时,您实际上在这里问的是:“N 的二进制数字是多少,a 27 -位数”。

对于那个,您不需要存储或计算任何东西 - 您只需要对int 进行位运算(因为int 是 32 位,你只需要 27)。所以:采用 int n,并使用按位运算符的任意组合(&|>>>、等)- 就是这样 - 没有立方体,没有列表,没有任何要存储或预先计算的东西 - 只是 int 的一部分。使用单个 int 的位是惊人的效率——甚至比从预先计算的 bool[,,] 中查找它们要便宜得多.内存成本实际上为零,而不是预计算选项的 16GiB。

关于c# - 为每个可能的排列填充 3x3 位立方体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55381372/

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