Advertisement
dobroslav-atanasov

Untitled

Feb 18th, 2018
585
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.07 KB | None | 0 0
  1. namespace PokemonTrainer
  2. {
  3.     using System;
  4.     using System.Collections.Generic;
  5.     using System.Linq;
  6.  
  7.     public class Startup
  8.     {
  9.         public static void Main()
  10.         {
  11.             Dictionary<string, Trainer> trainers = new Dictionary<string, Trainer>();
  12.             var input = Console.ReadLine();
  13.             var badgesCount = 0;
  14.             ReadInputAddToResult(input, trainers);
  15.             var currentElement = Console.ReadLine();
  16.             WorkWithElements(currentElement, trainers);
  17.             Print(trainers);
  18.         }
  19.  
  20.         private static void WorkWithElements(string currentElement, Dictionary<string, Trainer> trainers)
  21.         {
  22.             while (currentElement != "End")
  23.             {
  24.                 foreach (var currentTrainer in trainers.Values)
  25.                 {
  26.                     if (currentTrainer
  27.                         .Pokemons
  28.                         .Any(e => e.Element == currentElement))
  29.                     {
  30.                         currentTrainer.Badges++;
  31.                     }
  32.                     else
  33.                     {
  34.                         foreach (var currentPokemon in currentTrainer.Pokemons)
  35.                         {
  36.                             currentPokemon.Health -= 10;
  37.                         }
  38.                     }
  39.                     HealthCheck(currentTrainer);
  40.                 }
  41.                 currentElement = Console.ReadLine();
  42.             }
  43.         }
  44.  
  45.         private static void ReadInputAddToResult(string input, Dictionary<string, Trainer> trainers)
  46.         {
  47.             while (input != "Tournament")
  48.             {
  49.                 var inputArgs = input.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
  50.                 var trainerName = inputArgs[0];
  51.                 var currentPokemon = new Pokemon();
  52.                 currentPokemon.Name = inputArgs[1];
  53.                 currentPokemon.Element = inputArgs[2];
  54.                 currentPokemon.Health = int.Parse(inputArgs[3]);
  55.                 if (!trainers.ContainsKey(trainerName))
  56.                 {
  57.                     trainers[trainerName] = new Trainer(trainerName);
  58.                 }
  59.                 trainers[trainerName].Pokemons.Add(currentPokemon);
  60.                 input = Console.ReadLine();
  61.             }
  62.         }
  63.  
  64.         private static void HealthCheck(Trainer currentTrainer)
  65.         {
  66.             for (int i = 0; i < currentTrainer.Pokemons.Count; i++)
  67.             {
  68.                 if (currentTrainer.Pokemons[i].Health <= 0)
  69.                 {
  70.                     currentTrainer.Pokemons.Remove(currentTrainer.Pokemons[i]);
  71.                 }
  72.             }
  73.         }
  74.  
  75.         private static void Print(Dictionary<string, Trainer> trainers)
  76.         {
  77.             foreach (var currentTrainer in trainers.Values.OrderByDescending(x => x.Badges))
  78.             {
  79.                 Console.WriteLine($"{currentTrainer.Name} " +
  80.                                   $"{currentTrainer.Badges} " +
  81.                                   $"{currentTrainer.Pokemons.Count}");
  82.             }
  83.         }
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement