Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using System.Collections.Generic;
- class Program
- {
- static void Main(string[] args)
- {
- var players = new Dictionary<string, List<string>>();
- GetCardsPerPlayer(players);
- DistinctCards(players);
- foreach (var cards in players.Values)
- {
- int sum = 0;
- foreach (var card in cards)
- {
- int multiplier = GetMultiplier(card);
- int multiplicand = GetMultiplicand(card);
- sum += multiplicand * multiplier;
- }
- string player = null;
- foreach (var pair in players)
- {
- if (pair.Value == cards)
- {
- player = pair.Key;
- }
- }
- cards.Clear();
- cards.Add(sum.ToString());
- Console.WriteLine($"{player} {string.Join(" ", cards)}");
- }
- }
- static int GetMultiplier(string card)
- {
- int multiplier = 0;
- if (card.EndsWith('S'))
- {
- multiplier = 4;
- }
- else if (card.EndsWith('H'))
- {
- multiplier = 3;
- }
- else if (card.EndsWith('D'))
- {
- multiplier = 2;
- }
- else if (card.EndsWith('C'))
- {
- multiplier = 1;
- }
- return multiplier;
- }
- static int GetMultiplicand(string card)
- {
- int multiplicand = 0;
- if (card.StartsWith('J') == false && card.StartsWith('Q') == false && card.StartsWith('K') == false && card.StartsWith('A') == false)
- {
- multiplicand = int.Parse(card.Remove(card.Length - 1));
- }
- else if (card.StartsWith('J'))
- {
- multiplicand = 11;
- }
- else if (card.StartsWith('Q'))
- {
- multiplicand = 12;
- }
- else if (card.StartsWith('K'))
- {
- multiplicand = 13;
- }
- else if (card.StartsWith('A'))
- {
- multiplicand = 14;
- }
- return multiplicand;
- }
- static Dictionary<string, List<string>> DistinctCards(Dictionary<string, List<string>> players)
- {
- foreach (var pair in players)
- {
- List<string> newPair = pair.Value.Distinct().ToList();
- pair.Value.Clear();
- pair.Value.AddRange(newPair);
- }
- return players;
- }
- static Dictionary<string, List<string>> GetCardsPerPlayer(Dictionary<string, List<string>> players)
- {
- while (true)
- {
- List<string> input = Console.ReadLine().Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
- if (input[0] == "JOKER")
- {
- break;
- }
- List<string> cards = input.Skip(1).ToList();
- if (players.ContainsKey(input[0]) == false)
- {
- players.Add(input[0], cards);
- }
- else
- {
- players[input[0]].AddRange(cards);
- }
- }
- return players;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement