WindFell

Dragon Army + DragonFactory

Jun 27th, 2018
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.26 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.             string typeResult = $"{type.Key}::({averageDamage:F2}/{averageHealth:F2}/{averageArmor:F2})";
  36.             Console.WriteLine(typeResult);
  37.  
  38.             foreach (var name in type.Value.OrderBy(x => x.Key))
  39.             {
  40.                 string dragonResult = $"-{name.Key} -> damage: {name.Value.Damage}, health: {name.Value.Health}, armor: {name.Value.Armor}";
  41.                 Console.WriteLine(dragonResult);
  42.             }
  43.         }
  44.     }
  45. }
  46.  
  47. class Dragon
  48. {
  49.     public Dragon(string type, string name, int damage, int health, int armor)
  50.     {
  51.         this.Type = type;
  52.         this.Name = name;
  53.         this.Damage =  damage;
  54.         this.Health = health;
  55.         this.Armor = armor;
  56.     }
  57.  
  58.     public string Type { get; }
  59.  
  60.     public string Name { get; }
  61.  
  62.     public int Damage { get; }
  63.  
  64.     public int Health { get; }
  65.  
  66.     public int Armor { get; }
  67. }
  68.  
  69. class DragonFactory
  70. {
  71.     private const int defaultDamage = 45;
  72.     private const int defaultHealth = 250;
  73.     private const int defaultArmor = 10;
  74.  
  75.     public Dragon CreateDragon(string[] parameters)
  76.     {
  77.         string type = parameters[0];
  78.         string name = parameters[1];
  79.         int damage = parameters[2] == "null" ? defaultDamage : int.Parse(parameters[2]);
  80.         int health = parameters[3] == "null" ? defaultHealth : int.Parse(parameters[3]);
  81.         int armor = parameters[4] == "null" ? defaultArmor : int.Parse(parameters[4]);
  82.  
  83.         Dragon dragon = new Dragon(type, name, damage, health, armor);
  84.  
  85.         return dragon;
  86.     }
  87. }
Add Comment
Please, Sign In to add comment