Advertisement
nikeza

MOBA Challenger

Jul 17th, 2019
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.31 KB | None | 0 0
  1. package TechFundamentals;
  2.  
  3. import com.sun.source.tree.WhileLoopTree;
  4.  
  5. import java.sql.SQLOutput;
  6. import java.util.*;
  7. import java.util.logging.Level;
  8. import java.util.regex.Matcher;
  9. import java.util.regex.Pattern;
  10. import java.util.spi.AbstractResourceBundleProvider;
  11. import java.util.stream.Collectors;
  12. import java.util.stream.IntStream;
  13.  
  14.  
  15. public class array_temp {
  16.  
  17.  
  18.     public static void main(String[] args) {
  19.         Scanner scanner = new Scanner(System.in);
  20.  
  21.         String input = scanner.nextLine();
  22.  
  23.         Map<String, Map<String, Integer>> mobaPlayer = new TreeMap<>();
  24.  
  25.         while (!input.equals("Season end")) {
  26.             if (!input.contains("vs")) {
  27.                 String[] tokens = input.split(" -> ");
  28.                 String name = tokens[0];
  29.                 String position = tokens[1];
  30.                 int skill = Integer.parseInt(tokens[2]);
  31.  
  32.                 Map<String, Integer> positionAndSkill = mobaPlayer.get(name);
  33.                 if (!mobaPlayer.containsKey(name)) {
  34.                     positionAndSkill = new HashMap<>();
  35.                     positionAndSkill.put(position, skill);
  36.                     mobaPlayer.put(name, positionAndSkill);
  37.                 } else {
  38.                     if (!mobaPlayer.get(name).containsKey(position)) {
  39.                         mobaPlayer.get(name).put(position, skill);
  40.                     } else {
  41.                         if (skill > mobaPlayer.get(name).get(position)) {
  42.                             mobaPlayer.get(name).put(position, skill);
  43.                         }
  44.                     }
  45.                 }
  46.             } else {
  47.                 String[] tokens = input.split(" vs ");
  48.                 String firstName = tokens[0];
  49.                 String secondName = tokens[1];
  50.  
  51.                 if (mobaPlayer.containsKey(firstName)
  52.                         && mobaPlayer.containsKey(secondName)) {
  53.                     boolean checkOne = true;
  54.                     boolean checkTwo = true;
  55.                     for (Map.Entry<String, Integer> entryFirstName : mobaPlayer.get(firstName).entrySet()) {
  56.                         for (Map.Entry<String, Integer> entrySecondName : mobaPlayer.get(secondName).entrySet()) {
  57.                             if (entryFirstName.getKey().equals(entrySecondName.getKey())) {
  58.                                 int firstTotalSkill = 0;
  59.                                 int secondTotalSkill = 0;
  60.                                 for (Map.Entry<String, Integer> entryFirstTotalSkil : mobaPlayer.get(firstName).entrySet()) {
  61.                                     firstTotalSkill += entryFirstTotalSkil.getValue();
  62.                                 }
  63.                                 for (Map.Entry<String, Integer> entrySecondTotalSkil : mobaPlayer.get(secondName).entrySet()) {
  64.                                     secondTotalSkill += entrySecondTotalSkil.getValue();
  65.                                 }
  66.                                 if (firstTotalSkill > secondTotalSkill) {
  67.                                     checkTwo = false;
  68.                                     break;
  69.                                 } else if (firstTotalSkill < secondTotalSkill) {
  70.                                     checkOne = false;
  71.                                     break;
  72.                                 }
  73.  
  74.                             }
  75.                         }
  76.                     }
  77.                     if (!checkOne) {
  78.                         mobaPlayer.remove(firstName);
  79.                     } else if (!checkTwo) {
  80.                         mobaPlayer.remove(secondName);
  81.                     }
  82.                 }
  83.             }
  84.             input = scanner.nextLine();
  85.         }
  86.  
  87.         mobaPlayer.entrySet().stream()
  88.                 .sorted((f, s) -> {
  89.                     int firstTotalSkill = 0;
  90.                     int secondTotalSkill = 0;
  91.  
  92.                     for (Map.Entry<String, Integer> entryFirst : f.getValue().entrySet()) {
  93.                         firstTotalSkill += entryFirst.getValue();
  94.                     }
  95.                     for (Map.Entry<String, Integer> entrySecond : s.getValue().entrySet()) {
  96.                         secondTotalSkill += entrySecond.getValue();
  97.                     }
  98.                     if (firstTotalSkill - secondTotalSkill == 0) {
  99.                         return f.getKey().compareTo(s.getKey());
  100.                     } else {
  101.                         return Integer.compare(secondTotalSkill, firstTotalSkill);
  102.                     }
  103.                 })
  104.                 .forEach(e -> {
  105.                     int totalSkill = 0;
  106.                     for (Map.Entry<String, Integer> entry : e.getValue().entrySet()) {
  107.                         totalSkill += entry.getValue();
  108.                     }
  109.                     System.out.printf("%s: %d skill%n", e.getKey(), totalSkill);
  110.  
  111.                     e.getValue().entrySet().stream().sorted((f, s) -> {
  112.                         int sorted = s.getValue() - (f.getValue());
  113.                         if (sorted == 0) {
  114.                             return f.getKey().compareTo(s.getKey());
  115.                         } else {
  116.                             return s.getValue().compareTo(f.getValue());
  117.                         }
  118.                     })
  119.                             .forEach(a -> System.out.printf("- %s <::> %d%n", a.getKey(), a.getValue()));
  120.                 });
  121.  
  122.     }
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement