Didart

Hands Of Cards

Jan 20th, 2023
1,428
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.71 KB | None | 0 0
  1. package SetsAndMaps3;
  2.  
  3. import java.util.*;
  4.  
  5. public class HandsOfCards {
  6.     public static void main(String[] args) {
  7.         Scanner scanner = new Scanner(System.in);
  8.  
  9.         String input = scanner.nextLine();
  10.        
  11.         Map<String, Set<String>> players = new LinkedHashMap<>();
  12.  
  13.         while (!input.equals("JOKER")) {
  14.             String playerName = input.split(":\\s+")[0];
  15.             String cards = input.split(":\\s+")[1];
  16.  
  17.             String [] cardsArr = cards.split(", ");
  18.          
  19.             Set<String> cardsSet = new HashSet<>();
  20.             cardsSet.addAll(Arrays.asList(cardsArr));
  21.  
  22.             if (!players.containsKey(playerName)) {
  23.                 players.put(playerName, cardsSet);
  24.             } else {                      
  25.                 Set<String> currentCards = players.get(playerName);
  26.  
  27.                 currentCards.addAll(cardsSet);
  28.                 players.put(playerName, currentCards);
  29.             }
  30.             input = scanner.nextLine();
  31.         }
  32.  
  33.         players.entrySet().forEach(entry -> {
  34.             String name = entry.getKey();
  35.             Set<String> cards = entry.getValue();
  36.             int points = getCardsPoints(cards);
  37.             System.out.printf("%s: %d%n", name, points);
  38.         });
  39.     }
  40.  
  41.     private static int getCardsPoints(Set<String> cards) {
  42.  
  43.         Map<Character, Integer> symbolsValues = getSymbolsValues();
  44.      
  45.         int sumPoints = 0;
  46.         for (String card : cards) {
  47.             int points = 0;
  48.          
  49.             if (card.startsWith("10")) {
  50.                 char type = card.charAt(2);
  51.                 points = 10 * symbolsValues.get(type);
  52.             } else {
  53.                 char power = card.charAt(0);
  54.                 char type = card.charAt(1);
  55.                 points = symbolsValues.get(power) * symbolsValues.get(type);
  56.             }
  57.             sumPoints += points;
  58.         }
  59.        
  60.         return sumPoints;
  61.     }
  62.  
  63.     private static Map<Character, Integer> getSymbolsValues() {
  64.         Map<Character, Integer> characterValues = new HashMap<>();
  65.         characterValues.put('2', 2);
  66.         characterValues.put('3', 3);
  67.         characterValues.put('4', 4);
  68.         characterValues.put('5', 5);
  69.         characterValues.put('6', 6);
  70.         characterValues.put('7', 7);
  71.         characterValues.put('8', 8);
  72.         characterValues.put('9', 9);
  73.         characterValues.put('J', 11);
  74.         characterValues.put('Q', 12);
  75.         characterValues.put('K', 13);
  76.         characterValues.put('A', 14);
  77.         characterValues.put('S', 4);
  78.         characterValues.put('H', 3);
  79.         characterValues.put('D', 2);
  80.         characterValues.put('C', 1);
  81.         return characterValues;
  82.     }
  83. }
  84.  
Advertisement
Add Comment
Please, Sign In to add comment