Advertisement
elena1234

DragonArmy- with Class and LINQ

Jan 10th, 2021
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.73 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. namespace DragonArmy
  6. {
  7.     public class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             var dictTypeDragons = new Dictionary<string, List<Dragon>>();
  12.             int numbeOfDragons = int.Parse(Console.ReadLine());
  13.             for (int i = 0; i < numbeOfDragons; i++)
  14.             {
  15.                 string[] input = Console.ReadLine().Split();
  16.                 string type = input[0];
  17.                 string name = input[1];
  18.                 string damage = input[2];
  19.                 string health = input[3];
  20.                 string armor = input[4];
  21.                 if (!dictTypeDragons.ContainsKey(type))
  22.                 {
  23.                     Dragon newDragon = CreateNewDragon(type, name, damage, health, armor);
  24.                     dictTypeDragons.Add(type, new List<Dragon>());
  25.                     dictTypeDragons[type].Add(newDragon);
  26.                 }
  27.  
  28.                 else if (dictTypeDragons.ContainsKey(type) && !dictTypeDragons[type].Any(d => d.Name == name))
  29.                 {
  30.                     Dragon newDragon = CreateNewDragon(type, name, damage, health, armor);
  31.                     dictTypeDragons[type].Add(newDragon);
  32.                 }
  33.  
  34.                 else if (dictTypeDragons.ContainsKey(type) && dictTypeDragons[type].Any(d => d.Name == name))
  35.                 {
  36.                     Dragon findDragonToUpdate = dictTypeDragons[type].First(d => d.Name == name);
  37.                     dictTypeDragons[type].Remove(findDragonToUpdate);
  38.                     Dragon newDragon = CreateNewDragon(type, name, damage, health, armor);
  39.                     dictTypeDragons[type].Add(newDragon);
  40.                 }
  41.             }
  42.  
  43.             foreach (var (type, listOfDragons) in dictTypeDragons)
  44.             {
  45.                 double averageDamage = CalculateAverageDamage(dictTypeDragons, type);
  46.                 double averageHealth = CalculateAverageHealth(dictTypeDragons, type);
  47.                 double averageArmor = CalculateAverageArmor(dictTypeDragons, type);
  48.                 Console.WriteLine($"{type}::({averageDamage:F2}/{averageHealth:F2}/{averageArmor:F2})");
  49.                 foreach (var dragon in listOfDragons.OrderBy(x => x.Name))
  50.                 {
  51.                     Console.WriteLine($"-{dragon.Name} -> damage: {dragon.Damage}, health: {dragon.Health}, armor: {dragon.Armor}");
  52.                 }
  53.             }
  54.         }
  55.  
  56.  
  57.         private static double CalculateAverageArmor(Dictionary<string, List<Dragon>> dictTypeDragons, string type)
  58.         {
  59.             return dictTypeDragons[type].Select(x => x.Armor).Select(x => int.Parse(x)).ToList().Sum() > 0 ?
  60.                    dictTypeDragons[type].Select(x => x.Armor).Select(x => int.Parse(x)).ToList().Average() : 0;
  61.         }
  62.  
  63.         private static double CalculateAverageHealth(Dictionary<string, List<Dragon>> dictTypeDragons, string type)
  64.         {
  65.             return dictTypeDragons[type].Select(x => x.Health).Select(x => int.Parse(x)).ToList().Sum() > 0 ?
  66.                    dictTypeDragons[type].Select(x => x.Health).Select(x => int.Parse(x)).ToList().Average() : 0;
  67.         }
  68.  
  69.         private static double CalculateAverageDamage(Dictionary<string, List<Dragon>> dictTypeDragons, string type)
  70.         {
  71.             return dictTypeDragons[type].Select(x => x.Damage).Select(x => int.Parse(x)).ToList().Sum() > 0 ?
  72.                    dictTypeDragons[type].Select(x => x.Damage).Select(x => int.Parse(x)).ToList().Average() : 0;
  73.         }
  74.  
  75.         private static Dragon CreateNewDragon(string type, string name, string damage, string health, string armor)
  76.         {
  77.             Dragon newDragon = new Dragon(name);
  78.             newDragon.Type = type;
  79.             newDragon.Name = name;
  80.             newDragon.Damage = damage;
  81.             newDragon.Health = health;
  82.             newDragon.Armor = armor;
  83.  
  84.             if (newDragon.Damage == "null")
  85.             {
  86.                 newDragon.Damage = "45";
  87.             }
  88.  
  89.             if (newDragon.Health == "null")
  90.             {
  91.                 newDragon.Health = "250";
  92.             }
  93.  
  94.             if (newDragon.Armor == "null")
  95.             {
  96.                 newDragon.Armor = "10";
  97.             }
  98.  
  99.             return newDragon;
  100.         }
  101.     }
  102.  
  103.     class Dragon
  104.     {
  105.         public string Type { get; set; }
  106.         public string Name { get; set; }
  107.         public string Damage { get; set; }
  108.         public string Health { get; set; }
  109.         public string Armor { get; set; }
  110.  
  111.         public Dragon(string Name)
  112.         {
  113.             this.Name = Name;
  114.             this.Type = Type;
  115.             this.Damage = Damage;
  116.             this.Health = Health;
  117.             this.Armor = Armor;
  118.         }
  119.     }
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement