krasizorbov

MOBA Challenger

Mar 16th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.53 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. namespace MOBA_Challenger
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             //player.Key and Dictionary(position.Key and skill.Value)
  12.             var players = new Dictionary<string, Dictionary<string, int>>();
  13.             //player.Key and total sum of skill.Value
  14.             var playersNames = new Dictionary<string, int>();
  15.             //list of "positions" for first player
  16.             var playerList1 = new List<string>();
  17.             //list of "positions" for second player
  18.             var playerList2 = new List<string>();
  19.  
  20.             string data = Console.ReadLine();
  21.  
  22.             while (data.Contains(" -> "))
  23.             {
  24.                 string[] delimiters = new string[] { " vs ", " -> " };
  25.              
  26.                 string[] input = data.Split(delimiters, StringSplitOptions.RemoveEmptyEntries).ToArray();
  27.  
  28.                 if (input[0] == "Season end")
  29.                 {
  30.                     break;
  31.                 }
  32.  
  33.                 if (!data.Contains("vs"))
  34.                 {
  35.                     string player = input[0];
  36.                     string position = input[1];
  37.                     int skill = int.Parse(input[2]);
  38.  
  39.                     if (!players.ContainsKey(player))
  40.                     {
  41.                         players.Add(player, new Dictionary<string, int>());
  42.                         players[player][position] = skill;
  43.                     }
  44.                     else if (!players[player].ContainsKey(position))
  45.                     {
  46.                         players[player][position] = skill;
  47.                     }
  48.                     else if (players[player].ContainsKey(position))
  49.                     {
  50.                         if (players[player][position] < skill)
  51.                         {
  52.                             players[player][position] = skill;
  53.                         }
  54.                     }
  55.                 }
  56.                 data = Console.ReadLine();
  57.             }//while loop ends here
  58.  
  59.             //add player.Key and the sum of skill.Value to playersNames Dictionary
  60.             foreach (var player in players)
  61.             {
  62.                 foreach (var position in player.Value)
  63.                 {
  64.                     if (!playersNames.ContainsKey(player.Key))
  65.                     {
  66.                         playersNames.Add(player.Key, position.Value);
  67.                     }
  68.                     else
  69.                     {
  70.                         playersNames[player.Key] = playersNames[player.Key] + position.Value;
  71.                     }
  72.                 }
  73.             }
  74.  
  75.             while (data.Contains(" vs "))
  76.             {
  77.                 string[] delimiters = new string[] { " vs ", " -> " };
  78.              
  79.                 string[] input = data.Split(delimiters, StringSplitOptions.RemoveEmptyEntries).ToArray();
  80.  
  81.                 if (input[0] == "Season end")
  82.                 {
  83.                     break;
  84.                 }
  85.  
  86.                 if (data.Contains("vs"))
  87.                 {
  88.                     string player1 = input[0];
  89.                     string player2 = input[1];
  90.  
  91.                     if (players.ContainsKey(player1) && players.ContainsKey(player2))
  92.                     {
  93.                         //add "positions" to first player
  94.                         foreach (var player in players)
  95.                         {
  96.                             foreach (var position in player.Value)
  97.                             {
  98.                                 if (player.Key == player1)
  99.                                 {
  100.                                     playerList1.Add(position.Key);
  101.                                 }
  102.                             }
  103.                         }
  104.  
  105.                         //add "positions" to second player
  106.                         foreach (var player in players)
  107.                         {
  108.                             foreach (var position in player.Value)
  109.                             {
  110.                                 if (player.Key == player2)
  111.                                 {
  112.                                     playerList2.Add(position.Key);
  113.                                 }
  114.                             }
  115.                         }
  116.  
  117.                         //compare the 2 lists for equal "positions"
  118.                         bool isTrue = false;
  119.                         for (int i = 0; i < playerList1.Count; i++)
  120.                         {
  121.                             for (int j = 0; j < playerList2.Count; j++)
  122.                             {
  123.                                 if (playerList1[i] == playerList2[j])
  124.                                 {
  125.                                     isTrue = true;
  126.                                 }
  127.                             }
  128.                            
  129.                         }
  130.  
  131.                         //if true remove player from "players" Dictionary and from "playersNames" Dictionary
  132.                         if (isTrue)
  133.                         {
  134.                             if (playersNames[player1] > playersNames[player2])
  135.                             {
  136.                                 players.Remove(player2);
  137.                                 playersNames.Remove(player2);
  138.                             }
  139.                             else if (playersNames[player1] < playersNames[player2])
  140.                             {
  141.                                 players.Remove(player1);
  142.                                 playersNames.Remove(player1);
  143.                             }
  144.                            
  145.                         }
  146.  
  147.                         //clear the lists. they have to be empty
  148.                         playerList1.Clear();
  149.                         playerList2.Clear();
  150.                     }
  151.                 }
  152.  
  153.                 data = Console.ReadLine();
  154.  
  155.             }//while loop ends here.
  156.  
  157.             //Print
  158.             foreach (var player in playersNames.OrderByDescending(x => x.Value).ThenBy(x => x.Key))
  159.             {
  160.                 Console.WriteLine($"{player.Key}: {player.Value} skill");
  161.  
  162.                 foreach (var play in players)
  163.                 {
  164.                     if (player.Key == play.Key)
  165.                     {
  166.                         foreach (var position in play.Value.OrderByDescending(x => x.Value).ThenBy(x => x.Key))
  167.                         {
  168.                             Console.WriteLine($"- {position.Key} <::> {position.Value}");
  169.                         }
  170.                     }
  171.                 }
  172.             }
  173.         }
  174.     }
  175. }
Add Comment
Please, Sign In to add comment