Advertisement
Guest User

Untitled

a guest
Mar 27th, 2019
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.29 KB | None | 0 0
  1. import java.util.*;
  2. import java.util.regex.Matcher;
  3. import java.util.regex.Pattern;
  4.  
  5. public class kur {
  6.     public static void main(String[] args) {
  7.  
  8.         Scanner scanner = new Scanner(System.in);
  9.  
  10.         int msgCount = Integer.parseInt(scanner.nextLine());
  11.         Map<String, Integer> decryptedMsgs = new LinkedHashMap<>();
  12.         Pattern msgReq = Pattern.compile("[STARstar]+");
  13.  
  14.         for (int i = 0; i < msgCount; i++) {
  15.  
  16.             String message = scanner.nextLine();
  17.             Matcher msgReqMatch = msgReq.matcher(message);
  18.             StringBuilder valid = new StringBuilder();
  19.  
  20.             while (msgReqMatch.find()) {
  21.                 valid.append(msgReqMatch.group());
  22.             }
  23.             int count = valid.toString().length();
  24.             decryptedMsgs.put(message, count);
  25.  
  26.         }
  27.         Pattern messageReader = Pattern.compile("(?<planet>[A-Z][a-z]+)(?:[^@\\-!:>]*):(?<population>(\\d)+)" +
  28.                 "(?:[^@\\-!:>]*)!(?<attack>[AD])!(?:[^@\\-!:>]*)->(?<soldierCount>\\d+)");
  29.  
  30.         Map<String, List<String>> planets = new LinkedHashMap<>();
  31.         planets.put("A", new ArrayList<>());
  32.         planets.put("D", new ArrayList<>());
  33.  
  34.         for(Map.Entry<String, Integer> entry : decryptedMsgs.entrySet()) {
  35.  
  36.             StringBuilder decrypted = new StringBuilder();
  37.             String currentMessage = entry.getKey();
  38.  
  39.             for (int i = 0; i < currentMessage.length(); i++) {
  40.                 char currentChar = (char)(currentMessage.charAt(i) - entry.getValue());
  41.                 decrypted.append(currentChar);
  42.             }
  43.             Matcher matcher = messageReader.matcher(decrypted);
  44.  
  45.             if (matcher.find()) {
  46.                 String attackType = matcher.group("attack");
  47.                 String planet = matcher.group("planet");
  48.                 planets.get(attackType).add(planet);
  49.             }
  50.         }
  51.         planets.entrySet().forEach(pair -> {
  52.             String type = "";
  53.             if (pair.getKey().equals("A")) {
  54.                 type = "Attacked planets: ";
  55.             }else {
  56.                 type = "Destroyed planets: ";
  57.             }
  58.             System.out.println(type + pair.getValue().size());
  59.             pair.getValue().stream().sorted().forEach(e -> System.out.println("-> " + e));
  60.         });
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement