我有三个阵列。这些数组都具有相同的大小并包含相同的元素。但是,三个阵列的顺序不能相同。如何验证元素的顺序不一致?
以下是我实施它的方式:
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新手。
答案 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.