Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace DragonArmy
- {
- public class DragonArmy
- {
- public static void Main()
- {
- Dictionary<string, List<Dragon>> dragonArmy =
- new Dictionary<string, List<Dragon>>();
- int numberOfDragons = int.Parse(Console.ReadLine());
- for (int currDragon = 0; currDragon < numberOfDragons; currDragon++)
- {
- string[] inputLine = Console.ReadLine()
- .Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
- .ToArray();
- string dragonType = inputLine[0];
- string dragonName = inputLine[1];
- string dragonDamage = inputLine[2];
- string dragonHealth = inputLine[3];
- string dragonArmor = inputLine[4];
- if (!dragonArmy.ContainsKey(dragonType))
- {
- dragonArmy.Add(dragonType, new List<Dragon>());
- }
- if (!dragonArmy[dragonType].Any(n => n.Name == dragonName))
- {
- Dragon toAdd = new Dragon();
- toAdd.SetStats(dragonName, dragonDamage, dragonHealth, dragonArmor);
- dragonArmy[dragonType].Add(toAdd);
- }
- else
- {
- Dragon toOverwrite = new Dragon();
- toOverwrite = dragonArmy[dragonType].First(n => n.Name == dragonName);
- toOverwrite.OverwriteStats(dragonDamage, dragonHealth, dragonArmor);
- }
- }
- foreach (KeyValuePair<string, List<Dragon>> pair in dragonArmy)
- {
- string type = pair.Key;
- decimal dragonsInCurrType = pair.Value.Count;
- decimal averageHealth = pair.Value.Sum(h => h.Health) / dragonsInCurrType;
- decimal averageDamage = pair.Value.Sum(d => d.Damage) / dragonsInCurrType;
- decimal averageArmor = pair.Value.Sum(a => a.Armor) / dragonsInCurrType;
- Console.WriteLine($"{type}::({averageDamage:f2}/{averageHealth:f2}/{averageArmor:f2})");
- foreach (Dragon dragon in pair.Value.OrderBy(n => n.Name))
- {
- Console.WriteLine($"-{dragon.Name} -> damage: {dragon.Damage}, health: {dragon.Health}, armor: {dragon.Armor}");
- }
- }
- }
- }
- public class Dragon
- {
- private string name;
- private long health;
- private long damage;
- private long armor;
- public Dragon()
- {
- this.name = null;
- this.health = 250;
- this.damage = 45;
- this.armor = 10;
- }
- public string Name
- {
- get
- {
- return this.name;
- }
- }
- public long Health
- {
- get
- {
- return this.health;
- }
- }
- public long Damage
- {
- get
- {
- return this.damage;
- }
- }
- public long Armor
- {
- get
- {
- return this.armor;
- }
- }
- public void SetStats(string name, string damage, string health, string armor)
- {
- this.name = name;
- if (damage != "null")
- {
- this.damage = long.Parse(damage);
- }
- if (health != "null")
- {
- this.health = long.Parse(health);
- }
- if (armor != "null")
- {
- this.armor = long.Parse(armor);
- }
- }
- public void OverwriteStats(string damage, string health, string armor)
- {
- SetStats(this.name, damage, health, armor);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment