Advertisement
Guest User

13. Nether Realms

a guest
Mar 24th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 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.  
  7. public static void main(String[] args) {
  8. Scanner scanner = new Scanner(System.in);
  9.  
  10. String[] demons = scanner.nextLine().split(",\\s*");
  11. List<String> result = new ArrayList<>();
  12.  
  13. for (int i = 0; i < demons.length; i++) {
  14. String demon = demons[i];
  15. int health = getHealth(demon);
  16. double damage = getDamage(demon);
  17. result.add(String.format("%s - %d health, %.2f damage", demon, health, damage));
  18. }
  19. result.sort((e1, e2) -> e1.compareTo(e2));
  20. for (String e : result) {
  21. System.out.println(e);
  22. }
  23. }
  24.  
  25. private static int getHealth(String demon) {
  26. int hp = 0;
  27. Pattern pattern = Pattern.compile("(?<chars>[^\\d+\\-*\\/.])");
  28. Matcher matcher = pattern.matcher(demon);
  29. while (matcher.find()){
  30. char[] ch = matcher.group("chars").toCharArray();
  31. for (int i = 0; i < ch.length ; i++) {
  32. hp += ch[i];
  33. }
  34. }
  35. return hp;
  36. }
  37.  
  38. private static double getDamage(String demon) {
  39. double dmg = 0.0;
  40. Pattern pattern = Pattern.compile("(?<number>[-+]?\\d+\\.?\\d*)");
  41. Matcher matcher = pattern.matcher(demon);
  42. while (matcher.find()) {
  43. dmg += Double.parseDouble(matcher.group("number"));
  44. }
  45.  
  46. Pattern pattern2 = Pattern.compile("(?<special>[*\\/])");
  47. matcher = pattern2.matcher(demon);
  48. while (matcher.find()) {
  49. if (matcher.group("special").equals("*")) {
  50. dmg *= 2;
  51. } else if (matcher.group("special").equals("/")) {
  52. dmg /= 2;
  53. }
  54. }
  55. return dmg;
  56. }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement