Example #1
0
        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}");
                        }
                    }
                }
            }
        }
Example #3
0
        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}");
                }
            }
        }
Example #4
0
        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}");
                }
            }
        }