miroLLL

05Problem-HandsOfCards

Apr 10th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.80 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace _05Problem_HandsOfCards
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             List<string> playerAndHand = Console.ReadLine().Split(':').ToList();
  12.  
  13.             var personNameAndValue = new Dictionary<string, int>();
  14.             var personNameAndPlayedCards = new Dictionary<string, List<string>>();
  15.  
  16.             while (!playerAndHand[0].Equals("JOKER"))
  17.             {
  18.                 int value = 0;
  19.                 List<string> currentCards = playerAndHand[1].Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries).Distinct().ToList();
  20.  
  21.                 if (personNameAndPlayedCards.ContainsKey(playerAndHand[0]) == false)
  22.                 {
  23.                     personNameAndPlayedCards.Add(playerAndHand[0], currentCards);
  24.                 }
  25.                 else
  26.                 {
  27.                     List<string> repeatedCards = new List<string>();
  28.  
  29.                     foreach (var cardPair in currentCards)
  30.                     {
  31.                         if (currentCards.Contains(cardPair) && personNameAndPlayedCards[playerAndHand[0]].Contains(cardPair))
  32.                         {
  33.                             repeatedCards.Add(cardPair);
  34.                         }
  35.                     }
  36.  
  37.                     for (int i = 0; i < repeatedCards.Count; i++)
  38.                     {
  39.                         currentCards.Remove(repeatedCards[i]);
  40.                     }
  41.  
  42.                     personNameAndPlayedCards[playerAndHand[0]] = personNameAndPlayedCards[playerAndHand[0]].Concat(currentCards).Distinct().ToList();
  43.                 }
  44.  
  45.                 for (int i = 0; i < currentCards.Count; i++)
  46.                 {
  47.                     int power = 0;
  48.                     int type = 1;
  49.  
  50.                     int temp = 1;
  51.  
  52.                     switch (currentCards[i][0])
  53.                     {
  54.                         case 'J':
  55.                             power = 11;
  56.                             break;
  57.                         case 'Q':
  58.                             power = 12;
  59.                             break;
  60.                         case 'K':
  61.                             power = 13;
  62.                             break;
  63.                         case 'A':
  64.                             power = 14;
  65.                             break;
  66.                         case '1':
  67.                             power = 10;
  68.                             break;
  69.                         default:
  70.                             power = (int)Char.GetNumericValue(currentCards[i][0]);
  71.                             break;
  72.                     }
  73.  
  74.                     if (power == 10)
  75.                     {
  76.                         temp += 1;
  77.                     }
  78.  
  79.                     switch (currentCards[i][temp])
  80.                     {
  81.                         case 'S':
  82.                             type = 4;
  83.                             break;
  84.                         case 'H':
  85.                             type = 3;
  86.                             break;
  87.                         case 'D':
  88.                             type = 2;
  89.                             break;
  90.                     }
  91.                     value += power * type;
  92.                 }
  93.  
  94.                 if (personNameAndValue.ContainsKey(playerAndHand[0]) == false)
  95.                 {
  96.                     personNameAndValue.Add(playerAndHand[0], value);
  97.                 }
  98.                 else
  99.                 {
  100.                     personNameAndValue[playerAndHand[0]] += value;
  101.                 }
  102.  
  103.                 playerAndHand = Console.ReadLine().Split(':').ToList();
  104.             }
  105.  
  106.             foreach (var kvp in personNameAndValue)
  107.             {
  108.                 Console.WriteLine($"{kvp.Key}: {kvp.Value}");
  109.             }
  110.         }
  111.     }
  112. }
Add Comment
Please, Sign In to add comment