>>877
書いてみたよ。
名前のあとに、()付きで平均をいれた。
そのままでもよさそうだが、一応小数点第一位までに。

def heikin (l)
l.inject(0.0) {|r, v| r + v } / l.size
end

num_name = /\A(\w+\s+\w+)/

ARGF.readlines.map do
|line|
next unless hyouka = line.match(/#{num_name}\s+(.+)\Z/).to_a[2]
[heikin(hyouka.scan(/\w+:(\d+)/).map {|it,| it.to_i }), line]
end.
sort_by {|v,| v } .
map {|h, l| l.sub(num_name, "\\1 (#{(h * 10).floor / 10.0 })") } . # <<
reverse .
display