我想要比较两个二维数组。我想改变这两个数组之间不同的每个元素。
我最好如何做到这一点?
第一个数组是一个矩阵(让我们假设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>>
}
}
有关我想做什么的更多信息,这是Conway的生命游戏的perl实现。我已经运行良好,但是,我现在想要#34; animate&#34;细胞的生长和死亡(&#34; O&#34; - >&#34; o&#34; - &gt;&#34;。&#34; - &gt;&#34;&#34;)在运行下一次迭代之前。
答案 0 :(得分:1)
(写下我对后代的评论......)
由于您的数据集是两个相同的已知大小的数组数组,因此最简单的思考方式是遍历坐标集,从(0,0)开始到达(49,49) 。对于每组坐标,您可以将数组1中的值与数组2中的值进行比较,并将该位置的结果存储在数组3中的相同位置。
由于您有两个50x50阵列,因此代码如下所示:
for my $x (0 .. 49) {
for my $y (0 .. 49) {
# now compare $array1[$x][$y] to $array2[$x][$y]
# results can be saved in $array3[$x][$y]
}
}