【发布时间】:2014-10-22 13:55:00
【问题描述】:
我有两个想要比较的二维数组。我想更改这两个数组之间不同的每个元素。
- 数组元素必须保持相同的顺序。
- 该操作会经常执行。
- 二维数组最大可包含 100x100 个元素。
我怎样才能最好地做到这一点?
第一个数组是一个矩阵(假设为 50x50,但这可能会有所不同)。然后,我将对每个元素进行一些测试,并在某些条件匹配时更改元素。第一个数组中的元素没有更改,而是将所有元素保存在第二个数组中。
元素可以是“O”或“”(空格)。
示例数组可能如下所示:
@Array = ([" ", "O", "O", "O", " "],
[" ", "O", " ", " ", "O"],
["O", "O", " ", "O", " "],
[" ", "O", "O", "O", "O"],
[" ", " ", " ", "O", " "])
每次迭代后(一次迭代 = 对所有元素进行所有检查),新数组将打印给用户。我想比较数组的原因是我想看看哪些元素发生了变化。
到目前为止我所拥有的一些示例代码:
foreach my $Row(@GameBoard) {
foreach my $CurrentCell (@$Row) {
<<COMPARE ELEMENT TO THE CORRESPONDING ELEMENT IN THE OTHER ARRAY HERE>>
}
}
有关我想做的更多信息,这是康威生命游戏的 perl 实现。我让它运行良好,但是,我现在想在运行下一次迭代之前“动画”细胞的生长和死亡(“O”->“o”->“。”->“”)。
【问题讨论】:
-
如果相应的元素不同,您会提到“更改”。但究竟要改变什么?请解释。此外,如果有一组您正在谈论的示例数组以及示例数据,那就太好了。
-
示例代码有助于排除故障。到目前为止你有什么。数组肯定总是相同的几何形状吗?
-
我编辑了我的问题,希望现在更清楚了。
-
尝试将样本数据放入以下格式:
@arrayname1 = []&@arrayname2 = [] -
通过一组坐标来考虑它,并为这些坐标访问 array1 和 array2 中的数组元素——例如
for my $x (0 .. 49) { for my $y (0 .. 49) { if ($array1[$x][$y] eq $array2[$x][$y]) ...(等等)
标签: perl multidimensional-array comparison