-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]]

次に、この配列を 2 つの配列 (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 に答える