检查2个数组的数组是否与ruby中的输入数相加

时间:2013-07-24 11:43:08

标签: ruby

我是ruby on rails的新手。

我正在编写ruby并想尝试检查2个数组的数组是否与ruby中的输入数相加。

例如 数组A [] = {3,1,8,11,5,7} 给定整数表示N = 6 答案是1.5。

我知道如何用java,C ++编程,但我仍然坚持使用ruby编码,

任何人都可以帮助我。谢谢你提前

3 个答案:

答案 0 :(得分: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的所有货币对。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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