Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 比较具有相同元素的三个数组的顺序_Ruby_Arrays - Fatal编程技术网

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

Ruby 比较具有相同元素的三个数组的顺序,ruby,arrays,Ruby,Arrays,我有三个数组。这些数组都具有相同的大小并包含相同的元素。但是,这三个数组的顺序不能相同。如何验证元素的顺序不同 下面是我如何实现它的: all_elements_equal = true array1.zip(array2, array3) do |first, second, third| if first != second && second != third && first != third all

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

下面是我如何实现它的:

    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
如果所有_元素_equal都为false,则可能数组的顺序不同。但是,如果只有一个阵列不同,而其他两个阵列相同,则可能不会出现这种情况

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

你试过这个吗

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

我不知道Ruby,但我认为你需要颠倒你的逻辑

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

通常,如果您有N个这样的数组的array
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]]

+1-只是用一个简单的例子测试了一下,逻辑确实如预期的那样工作。这很有效。结果证明这个解决方案比我想象的要简单!稍微华丽一些(不一定更好):
[array1,array2,array3]。组合(2)。全部?{| a,b | a!=b}