#!/usr/local/bin/ruby pts={} summary = gets.chomp.split(/,/) # 科目名リスト summary << "合計" # 科目名の末尾を「合計」に nsubj = summary.length-1 # 科目数はsummaryの要素数-1 while line=gets x = line.split(/,/) # x[1]〜x[-1]に各科目の点が入る(文字列) name = x[0] # x[0]には氏名 pts[name] = x[1..-1] # pts[name]にx[1]〜x[-1]をコピー sum = 0 # 合計点用 0.upto(pts[name].length-1) do |j| # 数値に変換しておく pts[name][j] = pts[name][j].to_i sum += pts[name][j] end pts[name] << sum # 合計点を配列末尾に追加 end printf(" %-14s ", summary[0]) for s in summary[1..-1] printf("| %4s ", s) # 科目名のヘッダ出力 end puts "" puts "-"*16+"+------"*nsubj # 区切り線 # 合計点の高い順にソート for i in pts.keys.sort{ |x, y| pts[y][-1]<=>pts[x][-1] } printf(" %-14s ", i) for p in pts[i] printf("| %4d ", p) end puts "" end puts "-"*16+"+------"*nsubj # 区切り線