Advertisement
KeepCoding

Dict, Lambda, LINQ - Exercises - P05HandsOfCards

Feb 13th, 2018
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.33 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace P05HandsOfCards
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             Dictionary<string, List<string>> nameCards = new Dictionary<string, List<string>>();
  12.  
  13.             while (true)
  14.             {
  15.                 string[] input = Console.ReadLine().Split(':').ToArray();
  16.                 string name = input[0];
  17.                 if (name == "JOKER")
  18.                 {
  19.                     break;
  20.                 }
  21.                 string cards = input[1];
  22.  
  23.                 cards = cards.Trim();
  24.                 List<string> cardsList = new List<string>();
  25.                 cardsList = cards.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim()).Distinct().ToList(); // sigurno moje i po po-dobur nachin
  26.  
  27.                 if (nameCards.ContainsKey(name) == false)
  28.                 {
  29.                     nameCards.Add(name, cardsList);
  30.                 }
  31.                 else
  32.                 {
  33.                     nameCards[name] = ConcatenateLists(nameCards[name], cardsList).Distinct().ToList(); // subira gi i posle premahva duplikatite
  34.                 }
  35.  
  36.             }
  37.  
  38.             foreach (var kvp in nameCards)
  39.             {
  40.                 Console.WriteLine($"{kvp.Key}: {GetMaxScore(kvp.Value)}");
  41.             }
  42.  
  43.             //main ends here
  44.         }
  45.  
  46.         static List<string> ConcatenateLists(List<string> list1, List<string> list2) // works
  47.         {
  48.             List<string> result = new List<string>();
  49.             result = list1;
  50.             for (int i = 0; i < list2.Count; i++)
  51.             {
  52.                 result.Add(list2[i]);
  53.             }
  54.             return result;
  55.         }
  56.  
  57.         static int GetCardPoints(string card) //works
  58.         {
  59.             int multiplier = 0;
  60.             if (card.EndsWith('C')) // greshka pri kompilaciq, dori ako e daden string kato parametur
  61.             {
  62.                 multiplier = 1;
  63.             }
  64.             else if (card.EndsWith('D'))
  65.             {
  66.                 multiplier = 2;
  67.             }
  68.             else if (card.EndsWith('H'))
  69.             {
  70.                 multiplier = 3;
  71.             }
  72.             else if (card.EndsWith('S'))
  73.             {
  74.                 multiplier = 4;
  75.             }
  76.  
  77.             card = card.Remove(card.Length - 1);
  78.             int power = 0;
  79.  
  80.             try
  81.             {
  82.                 power = int.Parse(card);
  83.             }
  84.             catch
  85.             {
  86.                 switch (card)
  87.                 {
  88.                     case "J":
  89.                         power = 11;
  90.                         break;
  91.                     case "Q":
  92.                         power = 12;
  93.                         break;
  94.                     case "K":
  95.                         power = 13;
  96.                         break;
  97.                     case "A":
  98.                         power = 14;
  99.                         break;
  100.                 }
  101.             }
  102.  
  103.             return power * multiplier;
  104.         }
  105.  
  106.         static int GetMaxScore(List<string> cardsList)
  107.         {
  108.             int totalScore = 0;
  109.             foreach (var card in cardsList)
  110.             {
  111.                 totalScore += GetCardPoints(card);
  112.             }
  113.  
  114.             return totalScore;
  115.         }
  116.  
  117.         //class ends here
  118.     }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement