哈希将每个值相互求和

时间:2018-09-14 10:02:47

标签: ruby-on-rails ruby algorithm knapsack-problem

我有一个哈希,如下所示:

hash = {
  "Hulk" => 25,
  "IronMan" => 75,
  "Groot" => 51,
  "Captain America" =>50,
  "Spider Man" => 40,
  "Thor" => 50,
  "Black Panther" => 49
}

我需要找到一组超级英雄,当我将彼此的值求和时,它们的值将为100,例如,美国队长+雷神= 100。

我可以使用以下方法遍历具有索引的哈希:

hash.each_with_index { |(key,value),index| ... }

带有一个比较每个值的内部循环。

有没有更好,更简单的方法来解决这个问题?

1 个答案:

答案 0 :(得分:-1)

我想这就是您要寻找的

resultArr = []
input.keys.each do |keyName|
  input.each do |inKey, inValue|
    ((resultArr << [keyName, inKey]) if ((input[keyName] + inValue) == 100)) unless (keyName == inKey)
  end
end

result = []
resultArr.each do |resArr| result << resArr.sort end
result.uniq!
puts result