Advertisement
Guest User

Untitled

a guest
Mar 10th, 2022
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.31 KB | None | 0 0
  1. import java.util.*;
  2. import java.util.regex.Matcher;
  3. import java.util.regex.Pattern;
  4.  
  5. public class StarEnigma {
  6.     public static void main(String[] args) {
  7.         Scanner scanner = new Scanner(System.in);
  8.         int n = Integer.parseInt(scanner.nextLine());
  9.         List<String>attack = new ArrayList<>();
  10.         List<String>destroyed = new ArrayList<>();
  11.         for(int i = 0;i<n;i++){
  12.             String data = scanner.nextLine();
  13.             int count = 0;
  14.             for(int j = 0;j<data.length();j++){
  15.                 char current = data.charAt(j);
  16.                 if(current=='s'||current=='S'||current=='t'||current=='T'||
  17.                 current == 'a'||current=='A'||current=='r'||current=='R'){
  18.                     count++;
  19.                 }
  20.             }
  21.             StringBuilder sb = new StringBuilder();
  22.             for(int k = 0;k<data.length();k++){
  23.                 char current = (char)(data.charAt(k)-count);
  24.                 sb.append(current);
  25.             }
  26.             String regex = "@(?<planetName>[A-Za-z]+)[^@\\-!:>]*:(?<population>\\d+)[^@\\-!:>]*!(?<attackType>A|D)![^@\\-!:>]*->(?<soldierCount>\\d+)";
  27.             Pattern pattern = Pattern.compile(regex);
  28.             Matcher matcher = pattern.matcher(sb.toString());
  29.             while(matcher.find()){
  30.                 String planetName = matcher.group("planetName");
  31.                 int population = Integer.parseInt(matcher.group("population"));
  32.                 String attackType = matcher.group("attackType");
  33.                 int soldierCount = Integer.parseInt(matcher.group("soldierCount"));
  34.                 switch(attackType){
  35.                     case"A":
  36.                         attack.add(planetName);
  37.                         break;
  38.                     case"D":
  39.                         destroyed.add(planetName);
  40.                         break;
  41.                 }
  42.             }
  43.         }
  44.         System.out.printf("Attacked planets: %d%n",attack.size());
  45.         attack
  46.                 .stream()
  47.                 .sorted()
  48.                 .forEach(s->System.out.println(String.format("-> %s",s)));
  49.         System.out.printf("Destroyed planets: %d%n",destroyed.size());
  50.         destroyed
  51.                 .stream()
  52.                 .sorted()
  53.                 .forEach(s->System.out.println(String.format("-> %s",s)));
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement