-3

我有这个数组:

a =  [[4, 5, 59708], [6, 5, 93676], [8, 9, 3800], [8, 12, 3200], [8, 15, 6400], [8, 18, 400], [8, 20, 3200], [8, 21, 1838], [10, 11, 200], [10, 16, 100], [10, 17, 3200], [10, 19, 1400], [13, 14, 7344]]

现在我需要把这个数组分成两个数组(top_3 和 rest)。

前 3 应包含每个索引 0 的前 3 个条目。排名应基于索引 2。

top_3 =  [
  [6, 5, 93676], # (93676) Only one entry for index(0) == 6
  [4, 5, 59708],
  [8, 15, 6400], # (6400, 3800, 3200) top 3 for index(0) == 8
  [8, 9, 3800],  #
  [8, 20, 3200], # 
  [10, 11, 200],
  [10, 17, 3200],
  [10, 19, 1400], 
  [13, 14, 7344]]

不在前 3 名中的其余值应存储在另一个数组中:

rest = [[8, 18, 400], [8, 12, 3200], [8, 21, 1838], [10, 11, 200], [10, 16, 100]]
4

1 回答 1

2

你的问题真的很难理解,但我会尝试这样的事情:

top3 = a.group_by(&:first).map{|a,b| b.sort_by(&:last).last(3)}.flatten(1)

lower = a - top3
于 2013-11-08T13:10:01.753 回答