2015-09-26 32 views
0

我有阵列basket = ["O", "P", "W", "G"]sack = ["G", "P", "O", "W"]。我如何比较这些数组以确定元素是否按照相同顺序排列?确定阵列中的元素是否相应排列

+0

这两个数组是否具有相同数量的元素和相同的元素? –

+0

它们将具有相同数量的元素,但元素可能相同,也可能不相同。 –

+0

欢迎来到Stack Overflow。我们希望您提供您用来解决问题的最小代码。因为它看起来不像你试过任何东西,并希望我们为你解决它。 –

回答

0

这是我能够想出的解决方案。

ordered = 0 
disordered = 0 
index = 0 
while index < basket.length 

    if basket[index] == sack[index] 
     ordered+= 1  
    elsif basket.include?(sack[index]) && (basket[index] != sack[index]) 
     disordered+= 1 
    end 
    index += 1 
end 

puts" there are #{ordered} ordered common items and #{disordered} disordered common items" 

我希望它有帮助。

3

您可以使用:

basket == sack #=> false, for given values 

如果你对它们进行比较,具有相同次序:

basket.sort == sack.sort #=> true 

另外,请检查 “Comparing two arrays in Ruby” 关于比较数组的讨论。

+0

basket.sort == sack.sort如何证明两个数组的顺序相同?它只是证明两个数组具有相同的元素 –

+3

@WandMaker这只是为了说明第一条语句。 – dimakura

+0

是啊@WandMaker调用'Array#sort'会改变数组中元素的顺序。因此,这不会帮助您确定这两个数组是否具有相同的顺序,但只会帮助您确定它们是否具有完全相同的条款。 – Charles

0

如果两个数组都可以包含不同数量的元素并可能包含一些额外的元素,并且您想知道这两个数组共有的元素是否以完全相同的顺序出现,那么您可以执行如下操作:

basket = ["D", "O", "P", "W", "G", "C"] 
sack = ["Z", "O", "W", "P", "G", "X"] 

p (basket - (basket - sack)) == (sack - (sack - basket))