Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class Main {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- String[] demons = scanner.nextLine().split(",\\s*");
- List<String> result = new ArrayList<>();
- for (int i = 0; i < demons.length; i++) {
- String demon = demons[i];
- int health = getHealth(demon);
- double damage = getDamage(demon);
- result.add(String.format("%s - %d health, %.2f damage", demon, health, damage));
- }
- result.sort((e1, e2) -> e1.compareTo(e2));
- for (String e : result) {
- System.out.println(e);
- }
- }
- private static int getHealth(String demon) {
- int hp = 0;
- Pattern pattern = Pattern.compile("(?<chars>[^\\d+\\-*\\/.])");
- Matcher matcher = pattern.matcher(demon);
- while (matcher.find()){
- char[] ch = matcher.group("chars").toCharArray();
- for (int i = 0; i < ch.length ; i++) {
- hp += ch[i];
- }
- }
- return hp;
- }
- private static double getDamage(String demon) {
- double dmg = 0.0;
- Pattern pattern = Pattern.compile("(?<number>[-+]?\\d+\\.?\\d*)");
- Matcher matcher = pattern.matcher(demon);
- while (matcher.find()) {
- dmg += Double.parseDouble(matcher.group("number"));
- }
- Pattern pattern2 = Pattern.compile("(?<special>[*\\/])");
- matcher = pattern2.matcher(demon);
- while (matcher.find()) {
- if (matcher.group("special").equals("*")) {
- dmg *= 2;
- } else if (matcher.group("special").equals("/")) {
- dmg /= 2;
- }
- }
- return dmg;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement