arrays - Ruby 注入(inject)直到总和超过设定值并返回发生这种情况的索引

标签 arrays ruby inject

具有以下数组和值:

v = 50
a = [10, 20, 25, 10, 15]

我想遍历数组,将值相加,直到这些值的总和超过变量 v。然后我希望能够返回数组中发生这种情况的索引。所以...

10 + 20 + 25 = 55(这是总和大于“v”的第一个点) 所以指数 = 2

谢谢你的帮助

最佳答案

总和:

a.inject do |sum,n|
  break sum if sum > v
  sum + n
end

对于索引,思路是一样的——将备忘录用作数组,并将总和保存在第一个元素中:

a.inject([0,-1]) do |memo,n|
  break [memo[0], memo[1]] if memo[0] > v
  [memo[0]+n, memo[1]+1]
end

之后你需要查看数组

关于arrays - Ruby 注入(inject)直到总和超过设定值并返回发生这种情况的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30903949/

相关文章:

ruby - Sinatra 忽略了我的 layout.haml

ruby - 为什么我使用 inject 重构的 ruby​​ 不起作用?

cdi - 根据 Quarkus 中的应用程序属性注入(inject)不同的实现

javascript - 使用对象属性从对象数组中删除对象

javascript:获取不重复的随机数组对

ruby - Enumerable#find_all 异常 Ruby

angularjs - 有没有办法阻止 angular.service 注入(inject),直到加载服务的异步数据

c# - 通过循环创建数组

javascript 数组设置深度值

ruby - 使用 do...end block 时 map、select 等的不同行为