Advertisement
Guest User

Nether Realms Fixed

a guest
May 6th, 2019
595
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.53 KB | None | 0 0
  1. import java.util.*;
  2. import java.util.regex.Matcher;
  3. import java.util.regex.Pattern;
  4.  
  5. public class Main {
  6.     public static void main(String[] args) {
  7.         Scanner sc = new Scanner(System.in);
  8.  
  9.         String[] input = sc.nextLine().split(",\\s*");
  10.         double damage = 0;
  11.         double health = 0;
  12.  
  13.         Map<String, List<Double>> demonsInfo = new TreeMap<>();
  14.  
  15.  
  16.         String regexDamage = "[+-]?\\d+\\.?\\d*";
  17.         String regexHealth = "[^0-9*/+\\-.]";
  18.  
  19.  
  20.         for (int i = 0; i < input.length; i++) {  //each demon
  21.  
  22.             String demon = input[i].replaceAll(" ", "");
  23.  
  24.  
  25.             Pattern pattern = Pattern.compile(regexHealth);
  26.             Matcher matcher = pattern.matcher(demon);
  27.  
  28.             int countMultiply = 0;
  29.             int countDivide = 0;
  30.  
  31.  
  32.             for (int i1 = 0; i1 < demon.length(); i1++) {
  33.  
  34.  
  35.                 if ((char) demon.charAt(i1) == Character.valueOf('*')) {
  36.                     countMultiply++;
  37.                 } else if ((char) demon.charAt(i1) == '/') {
  38.                     countDivide++;
  39.                 }
  40.             }
  41.  
  42.             while (matcher.find()) {   // Making Health sum
  43.  
  44.  
  45.                 health += matcher.group().charAt(0);
  46.  
  47.  
  48.             }
  49.             Pattern pattern1 = Pattern.compile(regexDamage);
  50.             Matcher matcher1 = pattern1.matcher(demon);
  51.  
  52.             while (matcher1.find()) {
  53.  
  54.  
  55.                 damage += Double.parseDouble(matcher1.group());
  56.  
  57.  
  58.             }
  59.  
  60.  
  61.  
  62. //            if (countMultiply > 0) {
  63. //                for (int i1 = 0; i1 < countMultiply; i1++) {
  64. //                    damage = damage * 2;
  65. //                }
  66. //
  67. //            }
  68. //            if (countDivide > 0) {
  69. //                for (int i1 = 0; i1 < countMultiply; i1++) {
  70. //                    damage = damage / 2;
  71. //                }
  72. //            }
  73.             for (int i1 = 0; i1 < countDivide; i1++) {
  74.                 damage /= 2;
  75.             }
  76.             for (int i1 = 0; i1 < countMultiply; i1++) {
  77.                 damage *= 2;
  78.             }
  79.  
  80.  
  81.             List<Double> healthDamage = new ArrayList<>();
  82.             healthDamage.add(health);
  83.             healthDamage.add(damage);
  84.             demonsInfo.put(demon, healthDamage);
  85.  
  86.             damage = 0;
  87.             health = 0;
  88.         }
  89.  
  90.         for (Map.Entry<String, List<Double>> entry : demonsInfo.entrySet()) {
  91.             System.out.println(String.format("%s - %.0f health, %.2f damage", entry.getKey(), entry.getValue().get(0), entry.getValue().get(1)));
  92.         }
  93.     }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement