Advertisement
5kov

Nether Realms

Nov 29th, 2022 (edited)
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.95 KB | Software | 0 0
  1. import java.util.*;
  2. import java.util.regex.Matcher;
  3. import java.util.regex.Pattern;
  4. import java.util.stream.Collectors;
  5.  
  6. public class NetherRealms {
  7.     public static void main(String[] args){
  8.         Scanner Scanner = new Scanner(System.in);
  9.         List<String> daemons = Arrays.stream(Scanner.nextLine().split(",\\s*")).collect(Collectors.toList());
  10.         Map<String, String> daemonsCollection = new TreeMap<>();
  11.  
  12.         for(int i = 0; i < daemons.size(); i++){
  13.             String daemonName = daemons.get(i);
  14.             int daemonHealth = 0;
  15.  
  16.             Pattern p = Pattern.compile("(?<symbol>[^0-9+\\-*\\/.])");
  17.             Matcher m = p.matcher(daemonName);
  18.  
  19.             while(m.find()){
  20.                 int ascii = (int) m.group("symbol").charAt(0);
  21.                 daemonHealth += ascii;
  22.             }
  23.  
  24.             Pattern p2 = Pattern.compile("(?<number>(?:-|\\+|)\\d+(?:\\.*?\\d+)*)");
  25.             Matcher m2 = p2.matcher(daemonName);
  26.  
  27.             double baseDamage = 0.00;
  28.  
  29.             while(m2.find()){
  30.                 baseDamage += Double.parseDouble(m2.group("number"));
  31.             }
  32.  
  33.             Pattern p3 = Pattern.compile("(?<operator>[*|\\/])");
  34.             Matcher m3 = p3.matcher(daemonName);
  35.  
  36.             while(m3.find()){
  37.                 if (m3.group("operator").equals("*")){
  38.                     baseDamage = baseDamage * 2;
  39.                 } else if (m3.group("operator").equals("/")){
  40.                     baseDamage = baseDamage / 2;
  41.                 }
  42.             }
  43.  
  44.             daemonsCollection.put(daemonName, daemonHealth + " " + baseDamage);
  45.  
  46.         }
  47.  
  48.         for(Map.Entry<String, String> entry : daemonsCollection.entrySet()){
  49.             String[] temp = entry.getValue().split(" ");
  50.             int Health = Integer.parseInt(temp[0]);
  51.             double Damage = Double.parseDouble(temp[1]);
  52.             System.out.printf("%s - %d health, %.2f damage\n", entry.getKey(), Health, Damage);
  53.         }
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement