Advertisement
Guest User

Untitled

a guest
Nov 30th, 2020
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.91 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Comparator;
  3. import java.util.List;
  4. import java.util.Scanner;
  5. import java.util.regex.Matcher;
  6. import java.util.regex.Pattern;
  7.  
  8. public class StarEnigma {
  9.     public static void main(String[] args) {
  10.         Scanner scanner = new Scanner(System.in);
  11.  
  12.  
  13.         int n = Integer.parseInt(scanner.nextLine());
  14.         int count = 0;
  15.         StringBuilder sb = new StringBuilder();
  16.         List<String> attack = new ArrayList<>();
  17.         List<String> destroyed = new ArrayList<>();
  18.         int countAttack = 0;
  19.         int countDestroyed = 0;
  20.  
  21.         for (int i = 0; i < n; i++) {
  22.  
  23.             String input = scanner.nextLine();
  24.  
  25.             for (int j = 0; j < input.length(); j++) {
  26.                 char current = input.charAt(j);
  27.                 boolean small = current == 's' || current == 't' || current == 'a' || current == 'r';
  28.                 boolean big = current == 'S' || current == 'T' || current == 'A' || current == 'R';
  29.                 if (small || big) {
  30.                     count++;
  31.                 }
  32.             }
  33.             for (int j = 0; j < input.length(); j++) {
  34.                 char current = input.charAt(j);
  35.                 char current1 = (char) (current - count);
  36.                 sb.append(current1);
  37.  
  38.  
  39.             }
  40.             String regex = ".*@(?<name>[A-Za-z]+)[^@:!\\->]*:(?<population>\\d+)[^@:!\\->]*!(?<command>[A|D])![^@:!\\->]*\\->(?<soldier>\\d+).*";
  41.             Pattern pattern = Pattern.compile(regex);
  42.             Matcher matcher = pattern.matcher(sb);
  43.             if (matcher.matches()) {
  44.                 String name = matcher.group("name");
  45.                 int population = Integer.parseInt(matcher.group("population"));
  46.                 String attackString = matcher.group("command");
  47.                 int soldier = Integer.parseInt(matcher.group("soldier"));
  48.  
  49.  
  50.                 if ("A".equals(attackString)) {
  51.                     attack.add(name);
  52.                     countAttack++;
  53.                 } else {
  54.                     destroyed.add(name);
  55.                     countDestroyed++;
  56.                 }
  57.  
  58.             }
  59.             sb.setLength(0);
  60.             count = 0;
  61.  
  62.         }
  63.        
  64.         attack.sort(Comparator.naturalOrder());
  65.         destroyed.sort(Comparator.naturalOrder());
  66.        
  67.         if (countAttack == 0) {
  68.             System.out.println("Attacked planets: 0");
  69.         } else {
  70.             System.out.printf("Attacked planets: %d%n", countAttack);
  71.             for (String planet : attack) {
  72.                 System.out.printf("-> %s%n", planet);
  73.             }
  74.         }
  75.         if (countDestroyed == 0) {
  76.             System.out.println("Destroyed planets: 0");
  77.         } else {
  78.             System.out.printf("Destroyed planets: %d%n", countDestroyed);
  79.             for (String planet : destroyed) {
  80.                 System.out.printf("-> %s%n", planet);
  81.             }
  82.         }
  83.     }
  84. }
  85.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement