Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Java_Fundamentals_Exam_19_February_2017_Part_I_II;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.HashMap;
- import java.util.LinkedHashMap;
- import java.util.Map;
- import java.util.stream.Collectors;
- public class HighScore {
- public static void main(String[] args) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- HashMap<String, LinkedHashMap<String, Integer>> playersScores = new HashMap<>();
- String line = reader.readLine();
- Integer id = 0;
- while(!line.equalsIgnoreCase("osu!")){
- String[] opponents = line.split("<->");
- String firstPlayer = opponents[0].split("\\s+")[1];
- String secondPlayer = opponents[1].split("\\s+")[0];
- Integer firstScore = Integer.parseInt(opponents[0].split("\\s+")[0]);
- Integer secondScore = Integer.parseInt(opponents[1].split("\\s+")[1]);
- if (!playersScores.containsKey(firstPlayer)) {
- playersScores.put(firstPlayer, new LinkedHashMap<>());
- }
- id++;
- playersScores.get(firstPlayer).put(secondPlayer+"("+id+")", firstScore - secondScore);
- if (!playersScores.containsKey(secondPlayer)) {
- playersScores.put(secondPlayer, new LinkedHashMap<>());
- }
- playersScores.get(secondPlayer).put(firstPlayer+"("+id+")", secondScore - firstScore);
- id++;
- line = reader.readLine();
- }
- playersScores = playersScores.entrySet().stream().sorted((a,b) -> {
- Integer firstScore = getAllScores(a.getValue());
- Integer secondScore = getAllScores(b.getValue());
- return secondScore.compareTo(firstScore);
- }).collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue,(oldValue, newValue)->oldValue, LinkedHashMap::new));
- for (Map.Entry<String, LinkedHashMap<String, Integer>> player : playersScores.entrySet()) {
- System.out.printf("%s - (%d)%n",player.getKey(), getAllScores(player.getValue()));
- for (Map.Entry<String,Integer> oponent : player.getValue().entrySet()) {
- System.out.printf("* %s <-> %d%n",oponent.getKey().substring(0,oponent.getKey().indexOf("(")), oponent.getValue());
- }
- }
- }
- private static Integer getAllScores(LinkedHashMap<String, Integer> map){
- Integer result = 0;
- for (Integer integer : map.values()) {
- result += integer;
- }
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement