Guest User

Nether Realms

a guest
Mar 29th, 2019
320
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.45 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.*;
  5. import java.util.regex.Matcher;
  6. import java.util.regex.Pattern;
  7. import java.util.stream.Collectors;
  8.  
  9. public class Main {
  10.  
  11.     public static void main(String[] args) throws IOException {
  12.         Scanner scanner = new Scanner(System.in);
  13.  
  14.         String numberRegex = "[+-]?\\d+\\.?\\d*";
  15.         String operationRegex = "[*\\/]+";
  16.         String delimiterRegex = ",\\s*";
  17.  
  18.         Map <String,List<Double>> demonsHash = new TreeMap<>();
  19.         String[] demons = scanner.nextLine().split(delimiterRegex);
  20.  
  21.         for (int i = 0; i < demons.length; i++) {
  22.             double health = 0;
  23.             double damage = 0;
  24.  
  25.             List<Double> healthDamage = new ArrayList<>();
  26.             String currentDemon = demons[i].replaceAll(" ","");
  27.  
  28.             for (int j = 0; j < currentDemon.length(); j++) {
  29.                 char currentChar = currentDemon.charAt(j);
  30.                 if (Character.isLetter(currentChar)){
  31.                     health += currentChar;
  32.                 }
  33.             }
  34.             Pattern pattern = Pattern.compile(numberRegex);
  35.             Matcher numbers = pattern.matcher(currentDemon);
  36.  
  37.             while(numbers.find()){
  38.                 damage += Double.parseDouble(numbers.group());
  39.             }
  40.  
  41.             Pattern pattern1 = Pattern.compile(operationRegex);
  42.             Matcher delimiters = pattern1.matcher(currentDemon);
  43.  
  44.             while(delimiters.find()){
  45.                 String signsSequence = delimiters.group();
  46.                 for (int j = 0; j < signsSequence.length(); j++) {
  47.                     if (signsSequence.charAt(i) == '*'){
  48.                         damage *= 2;
  49.                     }
  50.                     else if (signsSequence.charAt(i) == '/') {
  51.                         damage /= 2;
  52.                     }
  53.                 }
  54.             }
  55.             healthDamage.add(health);
  56.             healthDamage.add(damage);
  57.  
  58.             demonsHash.put(currentDemon,healthDamage);
  59.         }
  60.  
  61.         demonsHash.forEach((key, value) -> {
  62.             System.out.print(key + " - ");
  63.             for (int i = 0; i < value.size(); i++) {
  64.                 if (i == 0) {
  65.                     System.out.printf("%.0f health, ", value.get(i));
  66.                 } else {
  67.                     System.out.printf("%.2f damage%n", value.get(i));
  68.                 }
  69.             }
  70.         });
  71.  
  72.     }
  73.     }
Advertisement
Add Comment
Please, Sign In to add comment