Advertisement
Guest User

: )

a guest
Nov 8th, 2016
464
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.util.*;
  2. import java.util.regex.Matcher;
  3. import java.util.regex.Pattern;
  4.  
  5. public class p01_netherRealms {
  6.     public static void main(String[] args) {
  7.         Scanner console = new Scanner(System.in);
  8.  
  9.         String demonsDmgPattern = "((?:-|\\+|)\\d+(?:\\.*?\\d+)*)";
  10.         Pattern regex = Pattern.compile(demonsDmgPattern);
  11.  
  12.         String[] demonsNames = console.nextLine().split(",\\s+");
  13.  
  14.         TreeMap<String, double[]> statsByDemon = new TreeMap<>();
  15.         for (int i = 0; i < demonsNames.length; i++) {
  16.             double dmg = 0;
  17.             double hp = 0;
  18.             String currentDemon = demonsNames[i];
  19.  
  20.             dmg = getDmg(regex, dmg, currentDemon);
  21.             hp = getHp(hp, currentDemon);
  22.  
  23.             statsByDemon.put(currentDemon, new double[] {hp, dmg});
  24.         }
  25.  
  26.         for ( Map.Entry<String, double[]> entry : statsByDemon.entrySet() ) {
  27.             String demon = entry.getKey();
  28.             double[] value = entry.getValue();
  29.             int hp = (int)(value[0]);
  30.             double dmg = value[1];
  31.  
  32.             System.out.format("%s - %d health, %.2f damage", demon, hp, dmg);
  33.             System.out.println();
  34.         }
  35.     }
  36.  
  37.     private static double getHp(double hp, String currentDemon) {
  38.         for (int j = 0; j < currentDemon.length(); j++) {
  39.             char c = currentDemon.charAt(j);
  40.             if (c != '+' && c != '-' && c != '*' && c != '/' && c != '.' && !Character.isDigit(c)) {
  41.                 hp += c;
  42.             }
  43.         }
  44.         return hp;
  45.     }
  46.  
  47.     private static double getDmg(Pattern regex, double dmg, String currentDemon) {
  48.         Matcher matcher = regex.matcher(currentDemon);
  49.         LinkedList<String> numbersAsString = new LinkedList<>();
  50.         while (matcher.find()) {
  51.             numbersAsString.add(matcher.group(0));
  52.         }
  53.  
  54.         for (int j = 0; j < numbersAsString.size(); j++) {
  55.             dmg += Double.parseDouble(numbersAsString.get(j));
  56.         }
  57.  
  58.         int multipliersCount = currentDemon.replaceAll("[^*]", "").length();
  59.         int divisorSCount = currentDemon.replaceAll("[^/]", "").length();
  60.  
  61.         if (multipliersCount > divisorSCount) {
  62.             for (int j = 0; j < multipliersCount - divisorSCount; j++) {
  63.                 dmg *= 2;
  64.             }
  65.         } else {
  66.             for (int j = 0; j < divisorSCount - multipliersCount; j++) {
  67.                 dmg /= 2;
  68.             }
  69.         }
  70.  
  71.         return dmg;
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement