static void Main(string[] args) { int n = int.Parse(Console.ReadLine()); HitlerArmy army = new HitlerArmy(); for (int i = 0; i < n; i++) { string[] cmdArgs = SplitString(Console.ReadLine()); string type = cmdArgs[0]; Dragon dragon = ParseDragon(cmdArgs); army.AddDragon(type, dragon); } Console.Write(army); }
public static void Main() { int numberOfDragons = int.Parse(Console.ReadLine()); Dictionary <string, List <Dragon> > typeOfDragons = new Dictionary <string, List <Dragon> >(); for (int i = 0; i < numberOfDragons; i++) { string[] dragonData = Console.ReadLine().Split().ToArray(); string type = dragonData[0]; string name = dragonData[1]; Dragon currentDragon = new Dragon(name); int damage = 0; int health = 0; int armor = 0; if (dragonData[2] != "null") { damage = int.Parse(dragonData[2]); } else { damage = currentDragon.Damage; } currentDragon.Damage = damage; if (dragonData[3] != "null") { health = int.Parse(dragonData[3]); } else { health = currentDragon.Health; } currentDragon.Health = health; if (dragonData[4] != "null") { armor = int.Parse(dragonData[4]); } else { armor = currentDragon.Armor; } currentDragon.Armor = armor; if (!typeOfDragons.ContainsKey(type)) { typeOfDragons[type] = new List <Dragon>(); typeOfDragons[type].Add(currentDragon); } else { if (!typeOfDragons[type].Any(x => x.Name == name)) { typeOfDragons[type].Add(currentDragon); } else { int index = typeOfDragons[type].FindIndex(x => x.Name == name); typeOfDragons[type][index].Damage = damage; typeOfDragons[type][index].Health = health; typeOfDragons[type][index].Armor = armor; } } } Dictionary <string, string> typesAverageStatus = new Dictionary <string, string>(); string tempAverageStatus = string.Empty; foreach (var type in typeOfDragons) { double averageDamage = 0; double averageHealth = 0; double averageArmor = 0; foreach (var dragon in type.Value) { averageDamage += dragon.Damage; averageHealth += dragon.Health; averageArmor += dragon.Armor; } averageDamage /= type.Value.Count; averageHealth /= type.Value.Count; averageArmor /= type.Value.Count; tempAverageStatus = $"::({averageDamage:f2}/{averageHealth:f2}/{averageArmor:f2})"; typesAverageStatus[type.Key] = tempAverageStatus; } foreach (var type in typesAverageStatus) { Console.WriteLine($"{type.Key}{type.Value}"); foreach (var pair in typeOfDragons) { if (pair.Key == type.Key) { foreach (var dragon in pair.Value.OrderBy(x => x.Name)) { Console.WriteLine($"-{dragon.Name} -> damage: {dragon.Damage}, health: {dragon.Health}, armor: {dragon.Armor}"); } } } } }
static void Main(string[] args) { int numberOfDragons = int.Parse(Console.ReadLine()); Dictionary <string, Dictionary <string, Dragon> > dragonArmy = new Dictionary <string, Dictionary <string, Dragon> >(); for (int i = 0; i < numberOfDragons; i++) { var dragonData = Console.ReadLine().Split(); string type = dragonData[0]; string name = dragonData[1]; int damage = 0; int health = 0; int armor = 0; if (dragonData[2] == "null") { damage = 45; } else { damage = int.Parse(dragonData[2]); } if (dragonData[3] == "null") { health = 250; } else { health = int.Parse(dragonData[3]); } if (dragonData[4] == "null") { armor = 10; } else { armor = int.Parse(dragonData[4]); } Dragon dragon = new Dragon(damage, health, armor); if (dragonArmy.ContainsKey(type)) { if (dragonArmy[type].ContainsKey(name)) { dragonArmy[type][name] = dragon; } else { dragonArmy[type].Add(name, dragon); } } else { dragonArmy.Add(type, new Dictionary <string, Dragon>()); dragonArmy[type].Add(name, dragon); } } foreach (var currentType in dragonArmy) { double sumDamage = 0; double sumHealht = 0; double sumArmor = 0; int count = 0; foreach (var currentName in currentType.Value) { count++; sumDamage += currentName.Value.Damage; sumHealht += currentName.Value.Health; sumArmor += currentName.Value.Armor; } Console.WriteLine($"{currentType.Key}::({sumDamage / count:f2}/{sumHealht / count:f2}/{sumArmor / count:f2})"); foreach (var currentName in currentType.Value.OrderBy(x => x.Key)) { Console.WriteLine($"-{currentName.Key} -> damage: {currentName.Value.Damage}, health: {currentName.Value.Health}, armor: {currentName.Value.Armor}"); } } }
static void Main(string[] args) { int dragonCount = int.Parse(Console.ReadLine()); int defaultHealth = 250; int defaultDamage = 45; int defaultArmor = 10; var result = new Dictionary <string, List <Dragon> >(); for (int i = 0; i < dragonCount; i++) { string[] currentDragon = Console.ReadLine().Split(' ').ToArray(); string curentColor = currentDragon[0]; string currentName = currentDragon[1]; string currentDamage = currentDragon[2]; string currentHealth = currentDragon[3]; string currentArmor = currentDragon[4]; int convertHealth, convertDamage, convertArmor; int resultDamage = Int32.TryParse(currentDamage, out convertDamage) ? convertDamage : defaultDamage; int resultHealth = Int32.TryParse(currentHealth, out convertHealth) ? convertHealth : defaultHealth; int resultArmor = Int32.TryParse(currentArmor, out convertArmor) ? convertArmor : defaultArmor; Dragon createDragon = new Dragon(currentName, resultHealth, resultDamage, resultArmor); bool replacement = false; if (!result.ContainsKey(curentColor)) { result.Add(curentColor, new List <Dragon>()); } foreach (var dragon in result[curentColor]) { if (dragon.Name == createDragon.Name) { dragon.Health = createDragon.Health; dragon.Damage = createDragon.Damage; dragon.Armor = createDragon.Armor; replacement = true; break; } } if (!replacement) { result[curentColor].Add(createDragon); } } foreach (var dragonsData in result) { string type = dragonsData.Key; var dragons = dragonsData.Value; double damageAverage = dragons.Average(x => x.Damage); double healthAverage = dragons.Average(x => x.Health); double armorAverage = dragons.Average(x => x.Armor); Console.WriteLine($"{type}::({damageAverage:F2}/{healthAverage:F2}/{armorAverage:F2})"); foreach (var dragon in dragons.OrderBy(x => x.Name)) { Console.WriteLine($"-{dragon.Name} -> damage: {dragon.Damage}, health: {dragon.Health}, armor: {dragon.Armor}"); } } }