Advertisement
Guest User

Untitled

a guest
Mar 27th, 2019
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.81 KB | None | 0 0
  1. package com.company.Regex;
  2.  
  3. import java.util.*;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6.  
  7. public class StarEnigma {
  8.     public static void main(String[] args) {
  9.         Scanner scanner = new Scanner(System.in);
  10.  
  11.         int n = Integer.parseInt(scanner.nextLine());
  12.  
  13.         String regexStar = "[^starSTAR]";
  14.  
  15.         String planetRegex = ".*?(?<planet>[a-zA-Z]+)(?:[^@\\-!:>]*):(?<population>(\\d)+)" +
  16.         "(?:[^@\\-!:>]*)!(?<attack>[AD])!(?:[^@\\-!:>]*)->(?<soldierCount>\\d+)";
  17.         String popuRegex = "(?<=:)[\\d]+";
  18.         String attackRegex = "(?<=!)[AD](?=!)";
  19.         String soldierCount = "(?<=->)[\\d]+";
  20.  
  21.         String deleted = "[^@\\-!:>]";
  22.  
  23.         Pattern planetPattern = Pattern.compile(planetRegex);
  24.         Pattern popuPattern = Pattern.compile(popuRegex);
  25.         Pattern atackPattern = Pattern.compile(attackRegex);
  26.         Pattern soldierPattern = Pattern.compile(soldierCount);
  27.  
  28.         String planet = "";
  29.         int popu = 0;
  30.         String  attack = "";
  31.         int soldier = 0;
  32.  
  33.  
  34.         int countA = 0;
  35.         int countD = 0;
  36.  
  37.         Set<String> aPlanet = new TreeSet<>();
  38.         Set<String> dPlanet = new TreeSet<>();
  39.  
  40.  
  41.         for (int i = 0; i < n; i++) {
  42.             String input = scanner.nextLine();
  43.  
  44.             int count = input.replaceAll(regexStar,"").length();
  45.  
  46.             char[] charsCount = input.toCharArray();
  47.  
  48.             for (int j = 0; j < charsCount.length; j++) {
  49.                 charsCount[j] = (char) (charsCount[j] - count);
  50.  
  51.             }
  52.             String decrypted = new String(charsCount);
  53.  
  54.             String delChars = decrypted.replaceAll(deleted,"");
  55.  
  56.             if (delChars.length() != 6){
  57.                 continue;
  58.             }
  59.  
  60.             Matcher matcherPlanet = planetPattern.matcher(decrypted);
  61.             Matcher matcherPopu = popuPattern.matcher(decrypted);
  62.             Matcher matcherAttack = atackPattern.matcher(decrypted);
  63.             Matcher matcherSoldier = soldierPattern.matcher(decrypted);
  64.  
  65.             if (matcherPlanet.find()) {
  66.                 planet = matcherPlanet.group("planet");
  67.                 if (matcherPlanet.group("attack").equals("A")) {
  68.                     countA ++;
  69.                     aPlanet.add(planet);
  70.  
  71.                 } else {
  72.                     countD ++;
  73.                     dPlanet.add(planet);
  74.                 }
  75.             }
  76.  
  77.  
  78.         }
  79.  
  80.         System.out.println(String.format("Attacked planets: %d",countA));
  81.         if (countA > 0){
  82.             aPlanet.stream().forEach(e -> System.out.println(String.format("-> %s",e)));
  83.         }
  84.         System.out.println(String.format("Destroyed planets: %d",countD));
  85.  
  86.         if (countD > 0){
  87.             dPlanet.stream().forEach(e -> System.out.println(String.format("-> %s",e)));
  88.         }
  89.  
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement