首页 > 解决方案 > 其值总和为特定值的哈希键

问题描述

我有一个哈希:

a = {"Q1"=>1, "Q2"=>2, "Q5"=>3, "Q8"=>3}

我想从中检索一组键,使得它们的值之和等于某个数字,例如 5。在这种情况下,输出应该是:

Q2 Q5

请帮助我如何获得这个。

标签: rubyhash

解决方案


只是出于好奇:

hash = {"Q1"=>1, "Q2"=>2, "Q5"=>3, "Q8"=>3}
arr = hash.to_a

1.upto(hash.size).
  lazy.
  find do |i|
    res = arr.combination(i).find do |h|
      h.map(&:last).sum == 5
    end
    break res if res
  end.tap { |result| break result.to_h if result }  
#⇒ {"Q2" => 2, "Q5" => 3}

推荐阅读