You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

整数映射至组成数:基于给定处理量构建哈希映射的技术需求

构建处理次数哈希表的Ruby实现方案

我来帮你搞定这个哈希表构建的问题,结合你给出的代码片段,我整理了完整的实现方案和逻辑解释:

问题背景

我们有一个代表各实体需处理次数的数组:

array = [20, 30, 10, 7, 8, 5]

以及实际总处理次数:

amount_processed = 80

需要构建一个哈希表,以数组元素为键,对应值为该元素在80次总处理中成功完成的次数(核心逻辑是按数组顺序分配处理次数,直到总次数耗尽)。

完整代码实现

array = [20, 30, 10, 7, 8, 5]
amount_processed = 80
hash = {}
index = 0

until amount_processed <= 0 || index == array.count
  current_item = array[index]
  # 取当前实体需求次数与剩余总处理次数的最小值,避免超量分配
  mapped_amount = [current_item, amount_processed].min
  hash[current_item] = mapped_amount
  # 更新剩余待处理次数
  amount_processed -= mapped_amount
  # 移动到下一个实体
  index += 1
end

# 输出结果
puts hash.inspect
# 本例输出:{20=>20, 30=>30, 10=>10, 7=>7, 8=>8, 5=>5}

代码逻辑解释

  • 初始化:创建空哈希表hash存储结果,index用于遍历数组元素
  • 循环终止条件:until循环会在两种情况下停止:总处理次数已耗尽(amount_processed <= 0),或者已经遍历完所有数组实体(index == array.count)
  • 分配处理次数:每次循环取当前数组元素,计算可分配的次数——取该实体的需求次数和剩余总次数的最小值,这样既不会超过该实体的需求上限,也不会超出总处理次数
  • 更新状态:将分配好的次数存入哈希表,减去已使用的处理次数,然后移动索引到下一个实体

特殊情况处理

如果总处理次数不等于数组元素总和,比如amount_processed = 70,代码会自动停止在总次数耗尽时,最终哈希表结果为:

{20=>20, 30=>30, 10=>10, 7=>7, 8=>3}

此时20+30+10+7+3=70,总处理次数刚好耗尽,后续的5不会被分配到次数。

内容的提问来源于stack exchange,提问作者james

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:56:08