Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.*;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import java.util.stream.Collectors;
- public class Main {
- public static void main(String[] args) throws IOException {
- Scanner scanner = new Scanner(System.in);
- String numberRegex = "[+-]?\\d+\\.?\\d*";
- String operationRegex = "[*\\/]+";
- String delimiterRegex = ",\\s*";
- Map <String,List<Double>> demonsHash = new TreeMap<>();
- String[] demons = scanner.nextLine().split(delimiterRegex);
- for (int i = 0; i < demons.length; i++) {
- double health = 0;
- double damage = 0;
- List<Double> healthDamage = new ArrayList<>();
- String currentDemon = demons[i].replaceAll(" ","");
- for (int j = 0; j < currentDemon.length(); j++) {
- char currentChar = currentDemon.charAt(j);
- if (Character.isLetter(currentChar)){
- health += currentChar;
- }
- }
- Pattern pattern = Pattern.compile(numberRegex);
- Matcher numbers = pattern.matcher(currentDemon);
- while(numbers.find()){
- damage += Double.parseDouble(numbers.group());
- }
- Pattern pattern1 = Pattern.compile(operationRegex);
- Matcher delimiters = pattern1.matcher(currentDemon);
- while(delimiters.find()){
- String signsSequence = delimiters.group();
- for (int j = 0; j < signsSequence.length(); j++) {
- if (signsSequence.charAt(i) == '*'){
- damage *= 2;
- }
- else if (signsSequence.charAt(i) == '/') {
- damage /= 2;
- }
- }
- }
- healthDamage.add(health);
- healthDamage.add(damage);
- demonsHash.put(currentDemon,healthDamage);
- }
- demonsHash.forEach((key, value) -> {
- System.out.print(key + " - ");
- for (int i = 0; i < value.size(); i++) {
- if (i == 0) {
- System.out.printf("%.0f health, ", value.get(i));
- } else {
- System.out.printf("%.2f damage%n", value.get(i));
- }
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment