Advertisement
elena1234

MOBAChallenger*

Nov 7th, 2020 (edited)
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.10 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace MOBAChallenger
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             var playersWithPostionsAndSkills = new Dictionary<string, Dictionary<string, int>>();
  12.             string input = string.Empty;
  13.             while ((input = Console.ReadLine()) != "Season end")
  14.             {
  15.                 if (input.Contains("->"))
  16.                 {
  17.                     string[] inputArray = input.Split(" -> ");
  18.                     string player = inputArray[0];
  19.                     string position = inputArray[1];
  20.                     int skill = int.Parse(inputArray[2]);
  21.                     if (playersWithPostionsAndSkills.ContainsKey(player) == false)
  22.                     {
  23.                         playersWithPostionsAndSkills[player] = new Dictionary<string, int>();
  24.                         playersWithPostionsAndSkills[player].Add(position, skill);
  25.                     }
  26.  
  27.                     else if (playersWithPostionsAndSkills.ContainsKey(player) == true)
  28.                     {
  29.                         bool thePositionAlreadyExist = false;
  30.                         foreach (var kvp in playersWithPostionsAndSkills[player])
  31.                         {
  32.                             string currentPosition = kvp.Key;
  33.                             int currentSkill = kvp.Value;
  34.                             if (currentPosition == position)
  35.                             {
  36.                                 thePositionAlreadyExist = true;
  37.                                 if (currentSkill < skill)
  38.                                 {
  39.                                     playersWithPostionsAndSkills[player][position] = skill;
  40.                                     break;
  41.                                 }
  42.                             }
  43.                         }
  44.  
  45.                         if (thePositionAlreadyExist == false)
  46.                         {
  47.                             playersWithPostionsAndSkills[player].Add(position, skill);
  48.  
  49.                         }
  50.                     }
  51.                 }
  52.  
  53.                 else if (input.Contains("vs"))
  54.                 {
  55.                     string[] inputArray = input.Split(" vs ");
  56.                     string firstPlayer = inputArray[0];
  57.                     string secondPlayer = inputArray[1];
  58.                     if (playersWithPostionsAndSkills.ContainsKey(firstPlayer) && playersWithPostionsAndSkills.ContainsKey(secondPlayer))
  59.                     {
  60.                         int totalSkillsFirstPlayer = playersWithPostionsAndSkills[firstPlayer].Values.Sum();
  61.                         int totalSkillsSecondPlayer = playersWithPostionsAndSkills[secondPlayer].Values.Sum();
  62.                         bool haveWinner = false;
  63.                         foreach (var kvp1 in playersWithPostionsAndSkills[firstPlayer])
  64.                         {
  65.                             string position1 = kvp1.Key;
  66.                             foreach (var kvp2 in playersWithPostionsAndSkills[secondPlayer])
  67.                             {
  68.                                 string position2 = kvp2.Key;
  69.                                 if (position1 == position2)
  70.                                 {
  71.                                     if (totalSkillsFirstPlayer > totalSkillsSecondPlayer)
  72.                                     {
  73.                                         playersWithPostionsAndSkills.Remove(secondPlayer);
  74.                                         haveWinner = true;
  75.                                         break;
  76.                                     }
  77.  
  78.                                     else if (totalSkillsSecondPlayer > totalSkillsFirstPlayer)
  79.                                     {
  80.                                         playersWithPostionsAndSkills.Remove(firstPlayer);
  81.                                         haveWinner = true;
  82.                                         break;
  83.                                     }
  84.                                 }
  85.                             }
  86.  
  87.                             if (haveWinner)
  88.                             {
  89.                                 break;
  90.                             }
  91.                         }
  92.                     }
  93.                 }
  94.             }
  95.  
  96.             PrintResult(playersWithPostionsAndSkills);
  97.         }
  98.  
  99.  
  100.         private static void PrintResult(Dictionary<string, Dictionary<string, int>> playersWithPostionsAndSkills)
  101.         {
  102.             foreach (var kvp in playersWithPostionsAndSkills.OrderByDescending(x => x.Value.Values.Sum()).ThenBy(x => x.Key))
  103.             {
  104.                 string player = kvp.Key;
  105.                 int totalSkill = kvp.Value.Values.Sum();// how to sum values
  106.  
  107.                 Console.WriteLine($"{player}: {totalSkill} skill");
  108.                 foreach (var kvp1 in playersWithPostionsAndSkills[player].OrderByDescending(x => x.Value).ThenBy(x => x.Key))
  109.                 {
  110.                     string position = kvp1.Key;
  111.                     int skill = kvp1.Value;
  112.                     Console.WriteLine($"- {position} <::> {skill}");
  113.                 }
  114.             }
  115.         }
  116.     }
  117. }
  118.  
  119.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement