Advertisement
filipovv

handsOfCards

Jun 20th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.89 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace P05_HandsOfCards
  6. {
  7.     class P05_HandsOfCards
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             var handsOfCards = new Dictionary<string, List<string>>();
  12.  
  13.             GetAllHands(handsOfCards);
  14.  
  15.             var handsValue = new Dictionary<string, int>();
  16.             CalcHandsValues(handsOfCards, handsValue);
  17.  
  18.             PrintHandsValues(handsValue);
  19.         }
  20.  
  21.         static void PrintHandsValues(Dictionary<string, int> handsValue)
  22.         {
  23.             foreach (var item in handsValue)
  24.             {
  25.                 Console.WriteLine($"{item.Key}: {item.Value}");
  26.             }
  27.         }
  28.  
  29.         static void CalcHandsValues(Dictionary<string, List<string>> handsOfCards, Dictionary<string, int> handsValue)
  30.         {
  31.             foreach (var item in handsOfCards)
  32.             {
  33.                 if (!handsValue.ContainsKey(item.Key))
  34.                 {
  35.                     handsValue[item.Key] = 0;
  36.                 }
  37.                 handsValue[item.Key] += GetHandValue(item.Value);
  38.             }
  39.         }
  40.  
  41.         static void GetAllHands(Dictionary<string, List<string>> handsOfCards)
  42.         {
  43.             var command = Console.ReadLine();
  44.  
  45.             while (command != "JOKER")
  46.             {
  47.                 var name = command
  48.                     .Split(':')
  49.                     .First();
  50.                 command = command.Remove(0, command.IndexOf(':') + 1);
  51.                 var cards = command
  52.                     .Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries)
  53.                     .ToList();
  54.                 if (!handsOfCards.ContainsKey(name))
  55.                 {
  56.                     handsOfCards[name] = new List<string>();
  57.                 }
  58.                 handsOfCards[name] = handsOfCards[name].Concat(cards).ToList();
  59.                 handsOfCards[name] = handsOfCards[name].Distinct().ToList();
  60.                 command = Console.ReadLine();
  61.             }
  62.         }
  63.  
  64.         static int GetHandValue(List<string> valuesList)
  65.         {
  66.             var sum = 0;
  67.             foreach (var item in valuesList)
  68.             {
  69.                 sum += GetCardValue(item);
  70.             }
  71.             return sum;
  72.         }
  73.  
  74.         static int GetCardValue(string card)
  75.         {
  76.             var cardValues = new Dictionary<char, int>
  77.             {
  78.                 {'C', 1}, {'D', 2}, {'H', 3}, {'S', 4},
  79.  
  80.                 {'2', 2}, {'3', 3}, {'4', 4}, {'5', 5},
  81.                 {'6', 6}, {'7', 7}, {'8', 8}, {'9', 9},
  82.                 {'1', 10}, {'J', 11}, {'Q', 12}, {'K', 13},
  83.                 {'A', 14},                
  84.             };
  85.  
  86.             var value = cardValues[card[0]];
  87.             var multiplier = cardValues[card[card.Length -1]];
  88.             var result = value * multiplier;
  89.            
  90.             return result;
  91.         }
  92.     }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement