2013-07-24 19 views
-3

我是新來的紅寶石在軌道上。檢查是否有2個數組的數組加起來輸入數字在紅寶石

我正在編程ruby,並且想要嘗試檢查數組的2個數是否合計爲紅寶石中的輸入數。

例如, 陣列A [] = {3,1,8,11,5,7} 定整說N = 6 答案將是1,5。

我知道如何把它在Java,C++編程,但我卡在紅寶石編碼,

任何人都可以請幫助me.Thanks提前

+3

堆棧溢出,你應該表現出你寫的代碼,你試圖解決的問題,並解釋爲什麼每一次嘗試沒有成功。否則,看起來你只是在尋找別人爲你寫代碼。 –

+0

@theTinMan對這個問題感到抱歉。下次記住它。遇到問題就問這個問題。讚賞你的評論 – Catmandu

+0

你仍然可以做這個工作並更新你的問題,它很可能會重新打開。 – zhon

回答

2

您可以使用Array#combination

ary = [3, 1, 8, 11, 5, 7] 
n = 6 
ary.combination(2).detect { |a, b| a + b == n } 
#=> [1, 5] 
  • combination(2)創建長度爲2的所有組合的數組,即[3,1], [3,8], [3,11]
  • detect { |a, b| a + b == n }返回與和n

第一對可以使用find_all,而不是detect與和n返回所有對。

+0

該解決方案速度很慢。 – sawa

+2

@sawa爲了清晰起見,我交易的速度很快;) – Stefan

0
a = [3, 1, 8, 11, 5, 7] 
p a.combination(2).find{|i| i.inject(:+) == 6} 
# >> [1, 5] 
1
a = [3, 1, 8, 11, 4, 5, 7, 2] 
> a.combination(2).select {|i| i.inject(:+) == 6 } 
#=> [[1, 5], [4, 2]]