かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

成績表のノート

επιστημηさんの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]}"
}