かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

成績表のノート

επιστημηさんのBlog東方算程譚にちょっとした問題のC++版、C#版があったのでRuby版を。

#学籍番号と得点(成績)の組:
#record      (7, 345), (8, 678), (1, 123), ...
#
#それと学籍番号の列:
#target      { 4, 5, 3, 1, 2 };
#
#があるとき、targetを得点順にソートせよ。

master = [
    [7, 345],
    [8, 678],
    [1, 123],
    [2, 456],
    [5, 567],
    [6, 812],
    [3, 781],
    [4, 234]
]

record = {}

master.each { |data|
    record[data[0]] = data[1]
}

target = [4, 5, 3, 1, 2]

target.sort { |a, b|
    record[a] <=> record[b]
}.each { |id|
    puts "#{id}/#{record[id]}"
}