-3

我是 ruby​​ on rails 的新手。

我正在对 ruby​​ 进行编程,并想尝试检查 2 个数组数字是否与 ruby​​ 中的输入数字相加。

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

我知道如何用 java、C++ 编程,但我被困在 ruby​​ 编码中,

谁能帮帮我。在此先感谢

4

3 回答 3

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 }返回第一对 sumn

您可以使用find_all而不是detect返回所有带有 sum 的对n

于 2013-07-24T12:05:30.110 回答
1
a = [3, 1, 8, 11, 4, 5, 7, 2]
> a.combination(2).select {|i| i.inject(:+) == 6 }
#=> [[1, 5], [4, 2]]
于 2013-07-24T12:15:33.467 回答
0
a = [3, 1, 8, 11, 5, 7]
p a.combination(2).find{|i| i.inject(:+) == 6}
# >> [1, 5]
于 2013-07-24T12:07:57.403 回答