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}