我有这个嵌套数组:

[[1, 2, 3],                                                                   
 [1, 3, 6],                                                                   
 [1, 4, 12],                                                                  
 [1, 5, 5],                                                                   
 [1, 2, 3],                                                                   
 [1, 8, 7],                                                                   
 [2, 3, 3],                                      
 [2, 4, 9],                                      
 [2, 5, 2],                                      
 [2, 8, 4],                                      
 [3, 4, 6],                                      
 [3, 8, 1],                                      
 [5, 8, 2],                                      
 [2, 8, 4],                                      
 [7, 8, 9]]

我正在努力寻找一种简洁但可读的方式:

  1. 比较并从每个嵌套数组内索引位置[2](即每个嵌套数组中的第三个元素)的那些值中找出最大值.
  2. 从包含点1的最大值的同一嵌套数组中返回索引[0]和[1]处的相邻值.

我try 过各种方法,比如#max#max_by#group_by#with_index,但都没有成功,但现在我只能从比我更能干的大脑和程序员那里得到一些启发.

推荐答案

查找最后一个元素上具有最大值的嵌套数组:

input = [[1, 2, 3], [1, 3, 6], [1, 4, 12], [1, 5, 5], [1, 2, 3], [1, 8, 7], [2, 3, 3], [2, 4, 9], [2, 5, 2], [2, 8, 4], [3, 4, 6], [3, 8, 1], [5, 8, 2], [2, 8, 4], [7, 8, 9]]
input.max_by(&:last)
#=> [1, 4, 12]

并且仅返回其前两个值:

input.max_by(&:last).take(2)
#=> [1, 4]

Ruby相关问答推荐

Ruby 中使用的-S标志是什么?

从整数中 Select 重复数字的字符串

当一个方法在没有参数的 return 关键字上提前退出时,返回什么值?

如何使用 define_method 指定方法默认参数?

Ruby:p *1..10中的星号是什么意思

这些 Ruby 命名空间约定之间有什么区别?

退出(exit)和中止(abort)有什么区别?

如何期望 RSpec should_receive 的一些(但不是全部)参数?

无法从同一网络上的另一台计算机访问本地 Sinatra 服务器

Ruby 中的 -> (stab) 运算符是什么?

Ruby 多维数组

使用哈希参数进行 DRY Ruby 初始化

如何通过反射获得活动记录关联

Ruby CSV - 获取当前行/行号

运行 Ruby 命令时,PATH 中不安全的世界可写目录 /Users/username,模式 040777

在 Ruby 中,获取数组中最大值的索引的最简洁方法是什么?

Capybara:按值而不是文本 Select 选项

将哈希传递给函数 ( *args ) 及其含义

我更改存储库 URL 后 Capistrano 部署失败

如何在 Ubuntu 12.04 上正确安装 ruby​​ 2.0.0?