static void Main(string[] args) { string command; HashSet <Trainer> trainers = new HashSet <Trainer>(); while ((command = Console.ReadLine()) != "Tournament") { string[] elements = command .Split(" ", StringSplitOptions.RemoveEmptyEntries); string trainerName = elements[0]; string pokemonName = elements[1]; string pokemonElement = elements[2]; int pokemonHealth = int.Parse(elements[3]); Pokemon currentPokemon = new Pokemon { Name = pokemonName, Element = pokemonElement, Health = pokemonHealth }; Trainer currentTrainer = new Trainer { Name = trainerName }; bool trainerExists = false; foreach (var trainer in trainers) { if (trainer.Name == currentTrainer.Name) { trainer.AddPokemons(currentPokemon); trainerExists = true; break; } } if (!trainerExists) { trainers.Add(currentTrainer); currentTrainer.AddPokemons(currentPokemon); } } string command2; while ((command2 = Console.ReadLine()) != "End") { switch (command2) { case "Fire": ApplyCommand2(trainers, command2); break; case "Water": ApplyCommand2(trainers, command2); break; case "Electricity": ApplyCommand2(trainers, command2); break; } } List <Trainer> sortedTrainers = trainers .OrderByDescending(x => x.NumberOfBadges) .ToList(); foreach (var trainer in sortedTrainers) { Console.WriteLine(trainer); } }
static void Main() { var trainers = new List <Trainer>(); while (true) { var command = Console.ReadLine(); if (command == "Tournament") { break; } var args = command.Split(" ", StringSplitOptions.RemoveEmptyEntries); var trainerName = args[0]; var pokemonName = args[1]; var pokemonElement = args[2]; var pokemonHealth = int.Parse(args[3]); var trainer = new Trainer(trainerName); var pokemon = new Pokemon(pokemonName, pokemonElement, pokemonHealth); var found = trainers.Find(x => x.Name == trainer.Name); if (found != null) { found.Pokemons.Add(pokemon); } else { trainer.Pokemons.Add(pokemon); trainers.Add(trainer); } } while (true) { var command = Console.ReadLine(); if (command == "End") { break; } string element = ProccesElement(command); foreach (var trainer in trainers) { if (trainer.Pokemons.Any(x => x.Element == element)) { trainer.Badges++; } else { for (int i = 0; i < trainer.Pokemons.Count; i++) { var pokemon = trainer.Pokemons[i]; pokemon.Health -= 10; if (pokemon.Health <= 0) { trainer.Pokemons.Remove(pokemon); i--; } } } } } var result = trainers.OrderByDescending(x => x.Badges).ToList(); foreach (var trainer in result) { Console.WriteLine(trainer.ToString()); } }