Advertisement
vasildiavolo

05. Hands of Cards

Apr 10th, 2018
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.17 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. var players = new Dictionary<string, List<string>>();
  10. GetCardsPerPlayer(players);
  11. DistinctCards(players);
  12.  
  13. foreach (var cards in players.Values)
  14. {
  15. int sum = 0;
  16. foreach (var card in cards)
  17. {
  18. int multiplier = GetMultiplier(card);
  19. int multiplicand = GetMultiplicand(card);
  20.  
  21. sum += multiplicand * multiplier;
  22. }
  23. string player = null;
  24. foreach (var pair in players)
  25. {
  26. if (pair.Value == cards)
  27. {
  28. player = pair.Key;
  29. }
  30. }
  31. cards.Clear();
  32. cards.Add(sum.ToString());
  33.  
  34. Console.WriteLine($"{player} {string.Join(" ", cards)}");
  35. }
  36. }
  37.  
  38. static int GetMultiplier(string card)
  39. {
  40. int multiplier = 0;
  41. if (card.EndsWith('S'))
  42. {
  43. multiplier = 4;
  44. }
  45. else if (card.EndsWith('H'))
  46. {
  47. multiplier = 3;
  48. }
  49. else if (card.EndsWith('D'))
  50. {
  51. multiplier = 2;
  52. }
  53. else if (card.EndsWith('C'))
  54. {
  55. multiplier = 1;
  56. }
  57.  
  58. return multiplier;
  59. }
  60. static int GetMultiplicand(string card)
  61. {
  62. int multiplicand = 0;
  63.  
  64. if (card.StartsWith('J') == false && card.StartsWith('Q') == false && card.StartsWith('K') == false && card.StartsWith('A') == false)
  65. {
  66. multiplicand = int.Parse(card.Remove(card.Length - 1));
  67. }
  68. else if (card.StartsWith('J'))
  69. {
  70. multiplicand = 11;
  71. }
  72. else if (card.StartsWith('Q'))
  73. {
  74. multiplicand = 12;
  75. }
  76. else if (card.StartsWith('K'))
  77. {
  78. multiplicand = 13;
  79. }
  80. else if (card.StartsWith('A'))
  81. {
  82. multiplicand = 14;
  83. }
  84.  
  85. return multiplicand;
  86. }
  87. static Dictionary<string, List<string>> DistinctCards(Dictionary<string, List<string>> players)
  88. {
  89. foreach (var pair in players)
  90. {
  91. List<string> newPair = pair.Value.Distinct().ToList();
  92. pair.Value.Clear();
  93. pair.Value.AddRange(newPair);
  94. }
  95.  
  96. return players;
  97. }
  98. static Dictionary<string, List<string>> GetCardsPerPlayer(Dictionary<string, List<string>> players)
  99. {
  100. while (true)
  101. {
  102. List<string> input = Console.ReadLine().Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
  103. if (input[0] == "JOKER")
  104. {
  105. break;
  106. }
  107. List<string> cards = input.Skip(1).ToList();
  108.  
  109. if (players.ContainsKey(input[0]) == false)
  110. {
  111. players.Add(input[0], cards);
  112. }
  113. else
  114. {
  115. players[input[0]].AddRange(cards);
  116. }
  117. }
  118.  
  119. return players;
  120. }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement