如何比较两个二维数组?

时间:2014-10-22 13:55:01

标签: perl multidimensional-array comparison

我想要比较两个二维数组。我想改变这两个数组之间不同的每个元素。

  1. 数组元素必须保持相同的顺序。
  2. 操作将经常执行。
  3. 二维阵列最大可达100x100个元素。
  4. 我最好如何做到这一点?

    第一个数组是一个矩阵(让我们假设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;)在运行下一次迭代之前。

1 个答案:

答案 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]
    }
}