Advertisement
meteor4o

JF-RegEx-Exec-04.StarEnigma

Jul 30th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.67 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.Scanner;
  6. import java.util.regex.Matcher;
  7. import java.util.regex.Pattern;
  8. import java.util.stream.Collectors;
  9.  
  10.  
  11. public class StarEnigma {
  12.     public static void main(String[] args) {
  13.         Scanner sc = new Scanner(System.in);
  14.  
  15.         int messages = Integer.parseInt(sc.nextLine());
  16.         List<String> attackedPlanets = new ArrayList<>();
  17.         List<String> destroyedPlanets = new ArrayList<>();
  18.  
  19.         for (int i = 0; i < messages; i++) {
  20.  
  21.             String initMessage = sc.nextLine();
  22.             String code = "star";
  23.             StringBuilder newMessage = new StringBuilder();
  24.  
  25.             int count = 0;
  26.  
  27.             for (int j = 0; j < initMessage.length(); j++) {
  28.                 char c = initMessage.charAt(j);
  29.                 if (code.indexOf(initMessage.toLowerCase().charAt(j))!= -1) {
  30.                     count++;
  31.                 }
  32.  
  33.             }
  34.             for (int j = 0; j < initMessage.length(); j++) {
  35.                 char c = initMessage.charAt(j);
  36.                 char d = (char)(c - count);
  37.                 newMessage.append(d);
  38.  
  39.             }
  40.             String regex = "@([A-Za-z]*)[^@\\-!:>]*?:[^@\\-!:>]*?([\\d]+)[^@\\-!:>]*?![^@\\-!:>]*?(A|D)[^@\\-!:>]*?![^@\\-!:>]*?->[^@\\-!:>]*?([\\d]+)";
  41.             Pattern pattern = Pattern.compile(regex);
  42.             Matcher matcher = pattern.matcher(newMessage);
  43.  
  44.  
  45.  
  46.             while (matcher.find()) {
  47.                 String planetName = matcher.group(1);
  48.                 Integer planetPopulation = Integer.parseInt(matcher.group(2));
  49.                 String attackType = matcher.group(3);
  50.                 Integer soldierCount = Integer.parseInt(matcher.group(4));
  51.  
  52.                     if (matcher.group(3).equals("A")) {
  53.                         attackedPlanets.add(planetName);
  54.                     } else {
  55.                         destroyedPlanets.add(planetName);
  56.                     }
  57.             }
  58.  
  59.          }
  60.         if (attackedPlanets.size() == 0) {
  61.             System.out.println("Attacked planets: 0");
  62.         } else {
  63.             System.out.printf("Attacked planets: %d%n", attackedPlanets.size());
  64.             attackedPlanets.stream().sorted().forEach(e -> {
  65.                 System.out.printf("-> %s%n", e);
  66.             });
  67.         }
  68.         if (destroyedPlanets.isEmpty()) {
  69.             System.out.println("Destroyed planets: 0");
  70.         } else {
  71.             System.out.printf("Destroyed planets: %d%n", destroyedPlanets.size());
  72.             destroyedPlanets.stream().sorted().forEach(e -> {
  73.                 System.out.printf("-> %s%n", e);
  74.             });
  75.         }
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement