WindFell

Dragon Army + DragonFactory

Jun 11th, 2018
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.18 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. class DragonArmy
  6. {
  7.     static void Main(string[] args)
  8.     {
  9.         int dragonsCount = int.Parse(Console.ReadLine());
  10.         DragonFactory dragonFactory = new DragonFactory();
  11.         var dragons = new Dictionary<string, Dictionary<string, Dragon>>();
  12.  
  13.         for (int counter = 0; counter < dragonsCount; counter++)
  14.         {
  15.             string[] dragonArgs = Console.ReadLine()
  16.                 .Split()
  17.                 .ToArray();
  18.  
  19.             Dragon dragon = dragonFactory.CreateDragon(dragonArgs);
  20.  
  21.             if (dragons.ContainsKey(dragon.Type) == false)
  22.             {
  23.                 dragons.Add(dragon.Type, new Dictionary<string, Dragon>());
  24.             }
  25.  
  26.             dragons[dragon.Type][dragon.Name] = dragon;
  27.         }
  28.  
  29.         foreach (var type in dragons)
  30.         {
  31.             double averageDamage = type.Value.Values.Average(x => x.Damage);
  32.             double averageHealth = type.Value.Values.Average(x => x.Health);
  33.             double averageArmor = type.Value.Values.Average(x => x.Armor);
  34.  
  35.             Console.WriteLine($"{type.Key}::({averageDamage:F2}/{averageHealth:F2}/{averageArmor:F2})");
  36.  
  37.             foreach (var name in type.Value.OrderBy(x => x.Key))
  38.             {
  39.                 Console.WriteLine($"-{name.Key} -> damage: {name.Value.Damage}, health: {name.Value.Health}, armor: {name.Value.Armor}");
  40.             }
  41.         }
  42.     }
  43. }
  44.  
  45. class Dragon
  46. {
  47.     public Dragon(string type, string name, int damage, int health, int armor)
  48.     {
  49.         this.Type = type;
  50.         this.Name = name;
  51.         this.Damage =  damage;
  52.         this.Health = health;
  53.         this.Armor = armor;
  54.     }
  55.  
  56.     public string Type { get; }
  57.     public string Name { get; }
  58.     public int Damage { get; }
  59.     public int Health { get; }
  60.     public int Armor { get; }
  61. }
  62.  
  63. class DragonFactory
  64. {
  65.     private const int defaultDamage = 45;
  66.     private const int defaultHealth = 250;
  67.     private const int defaultArmor = 10;
  68.  
  69.     public Dragon CreateDragon(string[] parameters)
  70.     {
  71.         string type = parameters[0];
  72.         string name = parameters[1];
  73.         int damage = parameters[2] == "null" ? defaultDamage : int.Parse(parameters[2]);
  74.         int health = parameters[3] == "null" ? defaultHealth : int.Parse(parameters[3]);
  75.         int armor = parameters[4] == "null" ? defaultArmor : int.Parse(parameters[4]);
  76.  
  77.         Dragon dragon = new Dragon(type, name, damage, health, armor);
  78.  
  79.         return dragon;
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment