tsekotsolov

Hands_of_Cards

Oct 20th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.42 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Problem8_Hands_of_Cards
  8. {
  9.     class HandsOfCards
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Dictionary<string, int> scores = new Dictionary<string, int>();
  14.             Dictionary<string, string> playersAndCards = new Dictionary<string, string>();
  15.  
  16.             while (true)
  17.             {
  18.  
  19.                 string[] input = Console.ReadLine().Split(':');
  20.                 string playerName = input[0];
  21.  
  22.                 if (playerName == "JOKER")
  23.                 {
  24.                     break;
  25.                 }
  26.  
  27.                 if (playersAndCards.ContainsKey(playerName))
  28.                 {
  29.                     playersAndCards[playerName] += input[1];
  30.                 }
  31.                 else
  32.                 {
  33.                     playersAndCards.Add(playerName, input[1]);
  34.                 }
  35.  
  36.             }
  37.  
  38.             foreach (KeyValuePair<string, string> pCards in playersAndCards)
  39.             {
  40.                 List<string> playerCards = new List<string>();
  41.  
  42.                 playerCards = pCards.Value.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries).Distinct().ToList();
  43.  
  44.                 int sumOfHand = 0;
  45.                 foreach (string card in playerCards)
  46.                 {
  47.                     sumOfHand += CardPoints(card);
  48.                 }
  49.  
  50.                 if (scores.ContainsKey(pCards.Key))
  51.                 {
  52.                     scores[pCards.Key] += sumOfHand;
  53.                 }
  54.                 else
  55.                 {
  56.                     scores.Add(pCards.Key, sumOfHand);
  57.                 }
  58.             }
  59.  
  60.             foreach (KeyValuePair<string, int> score in scores)
  61.             {
  62.                 Console.WriteLine($"{score.Key}: {score.Value}");
  63.             }
  64.         }
  65.  
  66.         private static int CardPoints(string card)
  67.         {
  68.             string power = card[0].ToString();
  69.             string type = card[card.Length - 1].ToString();
  70.             if (power == "1")
  71.             {
  72.                 power = "10";
  73.             }
  74.             int powerAsNumber = 0;
  75.             int typeAsNumber = 0;
  76.             bool nPower = int.TryParse(power, out powerAsNumber);//For the numerical values
  77.  
  78.             if (nPower == false)
  79.             {
  80.                 switch (power)//J, Q, K, A
  81.                 {
  82.                     case "J":
  83.                         powerAsNumber = 11;
  84.                         break;
  85.                     case "Q":
  86.                         powerAsNumber = 12;
  87.                         break;
  88.                     case "K":
  89.                         powerAsNumber = 13;
  90.                         break;
  91.                     case "A":
  92.                         powerAsNumber = 14;
  93.                         break;
  94.                 }
  95.             }
  96.  
  97.             switch (type)//S -> 4, H-> 3, D -> 2, C -> 1
  98.             {
  99.                 case "S":
  100.                     typeAsNumber = 4;
  101.                     break;
  102.                 case "H":
  103.                     typeAsNumber = 3;
  104.                     break;
  105.                 case "D":
  106.                     typeAsNumber = 2;
  107.                     break;
  108.                 case "C":
  109.                     typeAsNumber = 1;
  110.                     break;
  111.             }
  112.  
  113.             int cardPoints = powerAsNumber * typeAsNumber;
  114.             return cardPoints;
  115.         }
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment