/* package whatever; // don't place package name! */ import java.util.*; import java.lang.*; import java.io.*; /* Name of the class has to be "Main" only if the class is public. */ class Ideone { static int point = 5; static int scoreBorder = 45; static List<String> lines = new ArrayList<String>(); static Participants participants = new Participants(); { input(); divedeLines(lines); } static void input() { try { BufferedReader reader for ( ; ; ) { if (line == null) { break; } lines.add(line); } } } static void divedeLines(List<String> lines) { Iterator<String> itr = lines.iterator(); for ( ; itr.hasNext(); ) { line = itr.next(); break; } linesHeader += line + "\n"; } Participant participant = new Participant(line); if (participant.participates == 1) { participant.update(); participants.add(participant); } for ( ; itr.hasNext(); ) { line = itr.next(); break; } participant = new Participant(line); if (participant.participates == 1) { participant.update(); participants.add(participant); } } linesBorder = line; for ( ; itr.hasNext(); ) { line = itr.next(); break; } participant = new Participant(line); if (participant.participates == 1) { participant.update(); participants.add(participant); } } linesFooter += line + "\n"; for ( ; itr.hasNext(); ) { line = itr.next(); break; } linesFooter += line + "\n"; } participants.set(); } void output() { Iterator<Participant> itr = participants.iterator(); for ( ; itr.hasNext(); ) { Participant participant = itr.next(); if (participant.score <= 45.) { break; } } for ( ; itr.hasNext(); ) { Participant participant = itr.next(); if (participant.score <= 45.) { break; } } } } class Participants extends ArrayList<Participant> { double average; double sd; void set() { setAverage(); setSD(); update(); } void setAverage() { double sum = 0.; for (Participant participant : this) { sum += participant.score; } average = sum / size(); } void setSD() { double sum = 0.; for (Participant participant : this) { sum += (participant.score - average) * (participant.score - average); } } void update() { for (Participant participant : this) { participant.score = 50. + 10. * (participant.score - average) / sd; if (participant.score < 45) { participant.score = 45; } } } int no = 1; int noPrev = 1; double scorePrev = 0; boolean linesBorderIsDone = false; for (Participant participant : this) { if (participant.score <= Ideone.scoreBorder) { if (! linesBorderIsDone) { str += Ideone.linesBorder + "\n"; linesBorderIsDone = true; } participant.score = Ideone.scoreBorder; } if (participant.score == scorePrev) { participant.no = noPrev; } else { scorePrev = participant.score; participant.no = no; noPrev = no; } str += participant + "\n"; no++; } str += Ideone.linesFooter; return str; } } class Participant implements Comparable<Participant> { int no; String name; double score; int participates; String bar; try { } name = words[1]; bar = words.length == 5 ? words[4].trim() : ""; } void update() { if (bar != "") { score += 5 * bar.length(); bar = ""; } participates = 0; } return no +"," + name +"," + (int)(score+ 0.5) + ", " + participates + ","; } public int compareTo(Participant a) { if (score > a.score) { return -1; } else if (score < a.score) { return +1; } else { return name.compareTo(a.name); } } }
,,,, ,,,,単語クイズ 英語 2023年9~10月 ,,,, 順, ,持,参, 位,名前 ,点,加,優勝回 1, のりI,59, 1,14578 2, みちS,52, 1,23689 ,,,,-------------------------以下、辞書順 3,よりこ,45, 1, ,,,, ,,,,持点とは前期の成績から求めた偏差値。 ,,,,ただし、45点未満は45点とする。 ,,,,毎回、最高得点者に5点加点。 ,,,,最高得点者のうち下位者をその回の優勝者とする。 ,,,,優勝者はその後の活動のリクエストをすることができる。 ,,,, ,,,,更新 10/30
av= 68.66666666666667 sd= 20.79262689833426 ,,,, ,,,,単語クイズ 英語 2023年9~10月 ,,,, 順, ,持,参, 位,名前 ,点,加,優勝回 1, のりI,57, 0, 2, みちS,54, 0, ,,,,-------------------------以下、辞書順 3,よりこ,45, 0, ,,,, ,,,,持点とは前期の成績から求めた偏差値。 ,,,,ただし、45点未満は45点とする。 ,,,,毎回、最高得点者に5点加点。 ,,,,最高得点者のうち下位者をその回の優勝者とする。 ,,,,優勝者はその後の活動のリクエストをすることができる。 ,,,, ,,,,更新 10/30