ruby - 其值总和为特定值的哈希键
问题描述
我有一个哈希:
a = {"Q1"=>1, "Q2"=>2, "Q5"=>3, "Q8"=>3}
我想从中检索一组键,使得它们的值之和等于某个数字,例如 5。在这种情况下,输出应该是:
Q2 Q5
请帮助我如何获得这个。
解决方案
只是出于好奇:
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}
推荐阅读
- ibm-cloud - Mac High Sierra 和 Zsh 上的 IBM Cloud CLI 自动完成?
- python - 使用python for discord bot使用json保持这个错误
- python - 如何使用 selenium chrome Web 驱动程序自动化登录凭据
- phing - phing loadfile 到属性不会覆盖以前的值
- twitter-bootstrap-3 - Bootstrap 手风琴图标不适用于折叠状态
- css - 一次水平显示 5 个缩略图
- python - 子进程未获取 Awscli 排除和包含过滤器
- tensorflow - ImportError: libcudnn.so.7 tensorlfow(路径设置不起作用}
- javascript - 在流程中编写规范:如何在 mocha 中存根方法?
- macos - 在 Firefox/MacOS 中遇到硬页面刷新问题