2015-09-26 31 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))