初学者试图创建一个简单的选股程序.到目前为止,我的程序接受一个表示股票价格(指数是天)的整数平面数组,并返回一个嵌套数组的array.每个嵌套数组有三个值[每个连续的买入日指数、最佳卖出日指数、利润].如下所示:

stock_prices = [17, 2, 20, 6, 9, 15, 8, 1, 15, 15]
best_days = [[ 0,  2,  3], [ 1,  2, 18], [ 2,  5, -5], 
             [ 3,  5,  9], [ 4,  5,  6], [ 5,  8,  0], 
             [ 6,  8,  7], [ 7,  8, 14], [ 8,  9,  0]]

我希望找到最大利润日,然后返回包含该日买入和卖出天数索引值的array.在这种情况下,它将是:

absolute_best = [1, 2]

如何遍历嵌套数组的数组,但只比较每个嵌套数组的最终值?

推荐答案

要按条件(此处:第三个元素的值)查找最大的数组元素,您可以以各种方式使用max_by.

使用array decomposition提取第三个元素:

best_days.max_by { |a, b, c| c }

# or

best_days.max_by { |_, _, c| c }

# or

best_days.max_by { |*, c| c }

按原样使用数组并检索其last值:

best_days.max_by { |ary| ary.last }

# or

best_days.max_by(&:last)

上述所有股票均返回[1, 2, 18]美元.

除了max_by,还有sort_by可以用来按利润对数组进行排序.

Ruby相关问答推荐

Ruby 3 从多个预定纤程中收集结果

配置 SubLime Linter 插件以使用 Ruby 1.9 语法

冒号:和粗箭头=>有什么区别

Ruby 局部变量未定义

如何判断 Ruby 数组是否包含多个值之一?

如何在没有继承方法的情况下获取类的公共方法?

查明 IP 是否在 IP 范围内

将 2 元素数组的数组转换为哈希,其中重复键附加附加值

如何在不按 Enter 的情况下获取单个字符?

如何将消息附加到 RSpec 判断?

如何在 Ruby 中临时重定向标准错误?

仅针对特定参数的 Rspec 存根方法

如何仅从 Gemfile 中查看依赖关系树?

在 Selenium WebDriver 中按 Ctrl + A

如何在 Ruby 中使用gets和gets.chomp

如何验证 RSpec 中的退出和中止?

比较两个数组忽略Ruby中的元素顺序

如何在不等式中使用Ruby case ... when?

使用整数作为哈希键

检索/列出 Redis 数据库中的所有键/值对