Advertisement
Ligh7_of_H3av3n

13. Dragon Army

May 21st, 2024
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.05 KB | None | 0 0
  1. package Uprajnenie;
  2.  
  3. import java.util.LinkedHashMap;
  4. import java.util.Map;
  5. import java.util.Scanner;
  6. import java.util.TreeMap;
  7.  
  8. public class DragonArmy {
  9.     public static void main(String[] args) {
  10.         Scanner scanner = new Scanner(System.in);
  11.  
  12.  
  13.         // Read the number of dragons
  14.         int N = Integer.parseInt(scanner.nextLine());
  15.  
  16.         // Initialize a map to store dragons by type
  17.         Map<String, Map<String, int[]>> dragonsByType = new LinkedHashMap<>();
  18.  
  19.         // Process input for each dragon
  20.         for (int i = 0; i < N; i++) {
  21.             String[] dragonData = scanner.nextLine().split("\\s+");
  22.             String type = dragonData[0];
  23.             String name = dragonData[1];
  24.             int damage = dragonData[2].equals("null") ? 45 : Integer.parseInt(dragonData[2]);
  25.             int health = dragonData[3].equals("null") ? 250 : Integer.parseInt(dragonData[3]);
  26.             int armor = dragonData[4].equals("null") ? 10 : Integer.parseInt(dragonData[4]);
  27.  
  28.             // Add or update the dragon's stats for the given type
  29.             dragonsByType.computeIfAbsent(type, k -> new TreeMap<>())
  30.                     .put(name, new int[]{damage, health, armor});
  31.         }
  32.  
  33.         // Print aggregated data for each dragon type
  34.         dragonsByType.forEach((type, dragons) -> {
  35.             // Calculate average stats
  36.             double avgDamage = dragons.values().stream().mapToInt(d -> d[0]).average().orElse(0);
  37.             double avgHealth = dragons.values().stream().mapToInt(d -> d[1]).average().orElse(0);
  38.             double avgArmor = dragons.values().stream().mapToInt(d -> d[2]).average().orElse(0);
  39.  
  40.             // Print type and average stats
  41.             System.out.printf("%s::(%.2f/%.2f/%.2f)%n", type, avgDamage, avgHealth, avgArmor);
  42.  
  43.             // Print individual dragon stats
  44.             dragons.forEach((name, stats) -> {
  45.                 System.out.printf("-%s -> damage: %d, health: %d, armor: %d%n",
  46.                         name, stats[0], stats[1], stats[2]);
  47.             });
  48.         });
  49.     }
  50. }
  51.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement