答案の採点表を作る
試験の正解文字列 K が与えられる。
問題は 1 番から L 番まであり(L は K の長さ)、K の i 番目の文字が i 番の問題の正解である。
学生 n 人の答案が与えられる。
答案は A〜E と .(飛ばし)からなる文字列で、長さは 1 以上 L 以下である。
答案が L より短ければ、足りない後ろの問題は飛ばしたものとみなす。
正解なら 3 点、不正解なら -1 点、飛ばしたら 0 点である。
ループの代わりにリスト内包表記・ジェネレータ式と zip の仲間・enumerate・sorted・itertools.groupby のような組み込みの道具で、次のものを作って出力せよ。
1) 学生ごとに入力順に "名前 点数 正解数 不正解数 飛ばし数" を一行ずつ出力する。
2) 点数が同じ学生どうしをまとめ、点数の高いまとまりから "点数 名前1 名前2 ..." を一行ずつ出力する。
一つのまとまりの中の名前は入力順に書く。
3) 間違えた学生がいちばん多い問題の番号を、小さい番号から一行に空白で区切って出力する。
誰も間違えた問題がなければ - を出力する。
- 入力
- 最初の行に K(英大文字 A〜E、1 ≤ L ≤ 100)。
二行目に n(1 ≤ n ≤ 1000)。
続く n 行に "名前 答案"。
名前は英小文字と数字 1〜10 文字で、互いに異なる。 - 出力
- 1) n 行、2) 異なる点数の数だけの行、3) 一行
ABCDE 4 mina ABCDD joon AB sora .BCEA ted EBC
mina 11 4 1 0 joon 6 2 0 3 sora 4 2 2 1 ted 5 2 1 2 11 mina 6 joon 5 ted 4 sora 5
CAB 3 amy CAB bo C.B cy CAB
amy 9 3 0 0 bo 6 2 0 1 cy 9 3 0 0 9 amy cy 6 bo -