比较具有相同元素的三个数组的顺序

时间:2010-08-31 19:10:45

标签: ruby arrays

我有三个阵列。这些数组都具有相同的大小并包含相同的元素。但是,三个阵列的顺序不能相同。如何验证元素的顺序不一致?

以下是我实施它的方式:

    all_elements_equal = true
    array1.zip(array2, array3) do |first, second, third|
        if first != second && second != third && first != third
            all_elements_equal = false
        end
    end

如果all_elements_equal为false,则可能是数组的顺序不同。但是,如果只有一个阵列不同而另外两个阵列相同,则可能不会出现这种情况。

所以,我的问题是,如何让测试更强大,是否有更优雅的方式来实现代码?完全披露:我是Ruby新手。

3 个答案:

答案 0 :(得分:2)

你试过这个吗?

array1 == array2 || array1 == array3 || array2 == array3

答案 1 :(得分:1)

一般情况下,如果你有N个这样的数组的数组arr,你可以检查那里是否有任何重复:

arr.length == arr.uniq.length

因为,例如:

[[1,2,3],[2,3,1],[1,2,3]].uniq
#=> [[1, 2, 3], [2, 3, 1]]
[[1,2,3],[2,3,1],[2,1,3]].uniq
#=> [[1, 2, 3], [2, 3, 1], [2, 1, 3]]

答案 2 :(得分:0)

我不认识Ruby,但我认为你需要改变你的逻辑。

anyElementEqual=false
do
    if first==second || first==third || second==third
        anyElementEqual=true
end
etc.