@lsit = @国語 = (Aさん100点,Bさん80点,Cさん80点, Dさん50点, Eさん50点);
としました場合に
@ranking = (1);
for my $i (1 .. $#list) {
push @ranking, ($list[$i-1] == $list[$i] ? $ranking[-1] : $i+1);
}
としますと『Aさん1位、Bさん2位、Cさん2位、Dさん4位、Eさん4位』
となりますので、同じように
@lsit = @算数 = (Bさん100点,Aさん90点,Cさん80点, Dさん70点, Eさん60点);
としてあげましたら
『Bさん1位、Aさん2位、Cさん3位、Dさん4位、Eさん5位』
となりますので、ここで、2つを合計しまして
Aさん1位+2位=3ポイント
Bさん2位+1位=3ポイント
Cさん2位+3位=5ポイント
Dさん4位+4位=8ポイント
Eさん4位+5位=9ポイント
としました結果、ポイントの少ない人から再ランキングすれば…
と思っていましたら、ここでバグ?がありますねっ
どのテストにも同じメンバーが参加しましたらOKですけれど、
算数のテストにAさんからCさんまで3人しか参加をしませんで
DさんEさんが欠席の場合、
Aさん1位+2位=3ポイント
Bさん2位+1位=3ポイント
Cさん2位+3位=5ポイント
Dさん4位+『-』=4ポイント
Eさん4位+『-』=4ポイント
としましてDさんEさんの成績が良くなってしまいます…
でも、上位からポイントを付与していきますと
国語の結果
『Aさん1位(5pt)、Bさん2位(4pt)、Cさん2位(4pt)、Dさん4位(3pt?2pt?)、Eさん4位(3pt?2pt?)』
AさんからCさんまで3人だけ参加の算数の結果
『Bさん1位(5pt?3pt?)、Aさん2位(4pt?2pt?)、Cさん3位(3pt?1pt?)』
としまして何ptあげて良いのでしょうかと…
たぶんこの週末には解決しませんので、のんびりと…