我不明白爲什麼,但是當嵌套這兩個循環時生成的插入和匹配太多。任何幫助感謝!嵌套for循環中的數組插入和過度匹配 - ruby
僞 兩個數組 - 嵌套用於在第一陣列 每個元件的匹配迴路 搜索第二陣列如果在第二陣列中的匹配,取數在第一陣列的匹配 插入件數後具有字之後被匹配 結束
問題代碼:
ary1 = ['a','b','c','d']
ary2 = ['e','f','g', 'a']
limit = ary1.count - 1
limit2 = ary2.count - 1
(0..limit).each do |i|
(0..limit2).each do |j|
if ary1[i] == ary2[j]
ary1.insert(i,ary2[j])
puts 'match!'
end
end
end
puts ary1
輸出: 比賽! 匹配! 匹配! 匹配! 一個 一個 一個 一個 一個 b Ç d
臨時溶液:
ary1 = ['a','b','c','d']
ary2 = ['e','f','g', 'a']
# have to make a copy to avoid excessive matches
ary_dup = Array.new(ary1)
limit = ary1.count - 1
limit2 = ary2.count - 1
(0..limit).each do |i|
(0..limit2).each do |j|
if ary1[i] == ary2[j]
ary_dup.insert(i,ary2[j])
puts 'match!'
end
end
end
puts ary_dup
輸出: 匹配! 一個 一個 b Ç d
@Chris:nonocut的解決方案反映了Ruby解決問題的方式。 Ruby通常提供很多選擇;另一個將是a.map {| e | b。包括?(e)? [e,e]:e} .flatten(假設我正確理解問題)。 –