2017-04-25 19 views
-3

如果兩個號碼具有相同的平均得分,以較低的ID數量將打印的第一如果兩個號碼具有相同的平均得分,以較低的ID數量將打印的第一

Input 
======== 
4 
1000 8 
2000 8 
2000 10 
1000 9 

Output 
========= 
2000 
1000 

可能有人幫助我;嘗試了Enumerable#chunk並且沒有幫助。

+0

請您詳細說明。你只需要一個相同的號碼? – rameez

+0

輸入STDIN的第一行包含一個整數(N),它告訴我們輸入中還有多少行。隨後的N行中的每一行都包含兩個整數,它們是分別由空格分隔的數字和值。 –

+1

你可以選擇每一行中的第一個整數,並添加到一個Set,當進程結束時它將只有唯一的值,如果這是你想要的。你可以查看文檔[here](http://ruby-doc.org/stdlib-2.4.1/libdoc/set/rdoc/Set.html) – rameez

回答

0
input = %w|4 
1000 8 
2000 8 
2000 10 
1000 9| 

count, *values = input 
values.take(2 * count) # to make use of count 
     .each_slice(2) # id, score 
     .group_by(&:pop) # by same average score 
     .values   # ids 
     .select { |e| e.count > 1 } # not singles 
     .map { |e| e.flatten.sort_by { |e| -e.to_i } } # sort 

#⇒ ["2000", "1000"] 
相關問題