Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Fundamentals;
- import java.util.*;
- public class Main {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int lines = Integer.parseInt(scanner.nextLine());
- Map<String, Map<String, int[]>> dragons = new LinkedHashMap<>();
- for (int i = 1; i <= lines; i++) {
- String[] dragonData = scanner.nextLine().split(" ");
- String type = dragonData[0];
- String name = dragonData[1];
- int damage = dragonData[2].equals("null") ? 45 : Integer.parseInt(dragonData[2]);
- int health = dragonData[3].equals("null") ? 250 : Integer.parseInt(dragonData[3]);
- int armor = dragonData[4].equals("null") ? 10 : Integer.parseInt(dragonData[4]);
- Map<String, int[]> nameAndStats = new TreeMap<>();
- int[] stats = new int[3];
- stats[0] = damage;
- stats[1] = health;
- stats[2] = armor;
- nameAndStats.put(name, stats);
- if (!dragons.containsKey(type)) {
- dragons.put(type, nameAndStats);
- } else {
- dragons.get(type).remove(name);
- dragons.get(type).put(name, stats);
- }
- }
- Map<String, String> averageStatsForType = new LinkedHashMap<>();
- getAverageStats(dragons, averageStatsForType);
- printDragons(dragons, averageStatsForType);
- }
- private static void printDragons(Map<String, Map<String, int[]>> dragons, Map<String, String> averageStatsForType) {
- for (Map.Entry<String, String> typeStats : averageStatsForType.entrySet()) {
- for (Map.Entry<String, Map<String, int[]>> dragonType : dragons.entrySet()) {
- if (dragonType.getKey().equals(typeStats.getKey())) {
- System.out.printf("%s%s\n", typeStats.getKey(), typeStats.getValue());
- dragonType.getValue().forEach((k, v) -> {
- int i1 = 0;
- int i2 = 0;
- int i3 = 0;
- for (int i = 0; i < v.length; i++) {
- if (i == 0) {
- i1 = v[i];
- } else if (i == 1) {
- i2 = v[i];
- } else {
- i3 = v[i];
- }
- }
- System.out.printf("-%s -> damage: %d, health: %d, armor: %d\n", k, i1, i2, i3);
- });
- }
- }
- }
- }
- private static void getAverageStats(Map<String, Map<String, int[]>> dragons, Map<String, String> averageStatsForType) {
- for (String dragonType : dragons.keySet()) {
- double result1 = 0;
- double result2 = 0;
- double result3 = 0;
- for (Map.Entry<String, Map<String, int[]>> entry : dragons.entrySet()) {
- if (entry.getKey().equals(dragonType)) {
- int currentStatSum = entry.getValue().values().stream().map(e -> e[0]).mapToInt(e -> e).sum();
- int size = entry.getValue().values().size();
- result1 = 1.0 * currentStatSum / size;
- }
- }
- for (Map.Entry<String, Map<String, int[]>> entry : dragons.entrySet()) {
- if (entry.getKey().equals(dragonType)) {
- int currentStatSum = entry.getValue().values().stream().map(e -> e[1]).mapToInt(e -> e).sum();
- int size = entry.getValue().values().size();
- result2 = 1.0 * currentStatSum / size;
- }
- }
- for (Map.Entry<String, Map<String, int[]>> entry : dragons.entrySet()) {
- if (entry.getKey().equals(dragonType)) {
- int currentStatSum = entry.getValue().values().stream().map(e -> e[2]).mapToInt(e -> e).sum();
- int size = entry.getValue().values().size();
- result3 = 1.0 * currentStatSum / size;
- }
- }
- String averageStats = String.format("::(%.2f/%.2f/%.2f)", result1, result2, result3);
- averageStatsForType.put(dragonType, averageStats);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement