elena1234

MOBAChallenger_withClass

Jan 9th, 2021 (edited)
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.15 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace MOBAChallenger_withClass
  6. {
  7.     public class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             var dictNamePlayer = new Dictionary<string, Player>();
  12.             string command;
  13.             while ((command = Console.ReadLine()) != "Season end")
  14.             {
  15.                 if (!command.Contains("vs"))
  16.                 {
  17.                     string[] commandArray = command.Split(" -> ");
  18.                     string playerName = commandArray[0];
  19.                     string position = commandArray[1];
  20.                     int skill = int.Parse(commandArray[2]);
  21.                     if (!dictNamePlayer.ContainsKey(playerName))
  22.                     {
  23.                         var newPlayer = new Player(playerName);
  24.                         newPlayer.Name = playerName;
  25.                         newPlayer.DictPositionSkill = new Dictionary<string, int>();
  26.                         newPlayer.DictPositionSkill.Add(position, skill);
  27.                         dictNamePlayer.Add(playerName, newPlayer);
  28.                     }
  29.  
  30.                     else if (dictNamePlayer.ContainsKey(playerName))
  31.                     {
  32.                         if (!dictNamePlayer[playerName].DictPositionSkill.ContainsKey(position))
  33.                         {
  34.                             dictNamePlayer[playerName].DictPositionSkill.Add(position, skill);
  35.                         }
  36.  
  37.                         else if (dictNamePlayer[playerName].DictPositionSkill[position] < skill)
  38.                         {
  39.                             dictNamePlayer[playerName].DictPositionSkill[position] = skill;
  40.                         }
  41.                     }
  42.                 }
  43.  
  44.                 else if (command.Contains("vs"))
  45.                 {
  46.                     string[] commandArray = command.Split(' ');
  47.                     string firstPlayer = commandArray[0];
  48.                     string secondPlayer = commandArray[2];
  49.                     if (!dictNamePlayer.ContainsKey(firstPlayer) || !dictNamePlayer.ContainsKey(secondPlayer))
  50.                     {
  51.                         continue;
  52.                     }
  53.  
  54.                     bool firstPlayerIsWinner = false;
  55.                     bool secondPlayerIsWinner = false;
  56.                     foreach (var (position1, skill1) in dictNamePlayer[firstPlayer].DictPositionSkill)
  57.                     {
  58.                         foreach (var (position2, skill2) in dictNamePlayer[secondPlayer].DictPositionSkill)
  59.                         {
  60.                             if (position1 == position2 && skill1 > skill2)
  61.                             {
  62.                                 firstPlayerIsWinner = true;
  63.                                 break;
  64.                             }
  65.  
  66.                             else if (position1 == position2 && skill2 > skill1)
  67.                             {
  68.                                 secondPlayerIsWinner = true;
  69.                                 break;
  70.                             }
  71.                         }
  72.  
  73.                         if (firstPlayerIsWinner == true || secondPlayerIsWinner == true)
  74.                         {
  75.                             break;
  76.                         }
  77.                     }
  78.  
  79.                     if (firstPlayerIsWinner == false && secondPlayerIsWinner == false)
  80.                     {
  81.                         continue;
  82.                     }
  83.  
  84.                     CheckWhoIsTheWinnerAndRemoveLoser(dictNamePlayer, firstPlayer, secondPlayer, firstPlayerIsWinner, secondPlayerIsWinner);
  85.                 }
  86.             }
  87.  
  88.             PrintResult(dictNamePlayer);
  89.         }
  90.  
  91.  
  92.  
  93.         private static void CheckWhoIsTheWinnerAndRemoveLoser(Dictionary<string, Player> dictPlayerPositionSkill, string firstPlayer, string secondPlayer, bool firstPlayerIsWinner, bool secondPlayerIsWinner)
  94.         {
  95.             if (firstPlayerIsWinner)
  96.             {
  97.                 dictPlayerPositionSkill.Remove(secondPlayer);
  98.             }
  99.  
  100.             else if (secondPlayerIsWinner)
  101.             {
  102.                 dictPlayerPositionSkill.Remove(firstPlayer);
  103.             }
  104.         }
  105.  
  106.         private static void PrintResult(Dictionary<string, Player> dictNamePlayer)
  107.         {
  108.             foreach (var (currentName, currentPlayer) in dictNamePlayer
  109.                 .OrderByDescending(x => x.Value.DictPositionSkill.Values.Sum()).ThenBy(x => x.Key))
  110.             {
  111.  
  112.                 Console.WriteLine($"{currentName}: {currentPlayer.DictPositionSkill.Values.Sum()} skill");
  113.                 foreach (var (position, skill) in currentPlayer.DictPositionSkill
  114.                     .OrderByDescending(x => x.Value).ThenBy(x => x.Key))
  115.                 {
  116.                     Console.WriteLine($"- {position} <::> {skill}");
  117.                 }
  118.             }
  119.         }
  120.  
  121.  
  122.         class Player
  123.         {
  124.             public string Name { get; set; }
  125.             public Dictionary<string, int> DictPositionSkill { get; set; }
  126.  
  127.             public Player(string name)
  128.             {
  129.                 this.Name = name;
  130.                 this.DictPositionSkill = new Dictionary<string, int>();
  131.             }
  132.         }
  133.     }
  134. }
Add Comment
Please, Sign In to add comment