Advertisement
valchak

Hands_of_Cards

Oct 9th, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.39 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.*;
  5.  
  6. public class p13_Hands_of_Cards {
  7.  
  8.     public static void main(String[] args) throws IOException {
  9.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  10.         LinkedHashMap<String, HashSet<String>> players = new LinkedHashMap<>();
  11.  
  12.         while (true) {
  13.  
  14.             String[] inputLine = reader.readLine().split(":");
  15.             if (inputLine[0].equalsIgnoreCase("JOKER")) {
  16.                 break;
  17.             }
  18.             String name = inputLine[0];
  19.             String[] cards = inputLine[1].trim().split(", ");
  20.  
  21.             if (!players.containsKey(name)) {
  22.                 players.put(name, new HashSet<>());
  23.             }
  24.  
  25.             players.get(name).addAll(Arrays.asList(cards));
  26.         }
  27.  
  28.         if(players.size() > 0){
  29.             calculateValues(players);
  30.         }
  31.  
  32.     }
  33.  
  34.     private static void calculateValues(HashMap<String, HashSet<String>> players) {
  35.  
  36.         LinkedHashMap<String, Integer> results = new LinkedHashMap<>();
  37.  
  38.         for (Map.Entry<String, HashSet<String>> player : players.entrySet()) {
  39.  
  40.             List<String> cards = new ArrayList<>(player.getValue());
  41.             int totalValuePlayer = 0;
  42.  
  43.             for (String card : cards) {
  44.                 String power = card.substring(0, card.length() - 1);
  45.                 String type = card.substring(card.length() - 1);
  46.  
  47.                 int value = calculatePlayersTotalValue(power, type);
  48.                 totalValuePlayer += value;
  49.             }
  50.  
  51.             results.put(player.getKey(), totalValuePlayer);
  52.         }
  53.  
  54.         for (Map.Entry<String, Integer> result : results.entrySet()) {
  55.             System.out.printf("%s: %d%n", result.getKey(), result.getValue());
  56.         }
  57.  
  58.     }
  59.  
  60.     private static int calculatePlayersTotalValue(String power, String type) {
  61.  
  62.         int typeInt = 1;
  63.         int powerInt = 1;
  64.  
  65.         switch (type) {
  66.             case "S":
  67.                 typeInt = 4;
  68.                 break;
  69.             case "H":
  70.                 typeInt = 3;
  71.                 break;
  72.             case "D":
  73.                 typeInt = 2;
  74.                 break;
  75.             case "C":
  76.                 typeInt = 1;
  77.                 break;
  78.         }
  79.  
  80.         switch (power) {
  81.             case "2":
  82.                 powerInt = 2;
  83.                 break;
  84.             case "3":
  85.                 powerInt = 3;
  86.                 break;
  87.             case "4":
  88.                 powerInt = 4;
  89.                 break;
  90.             case "5":
  91.                 powerInt = 5;
  92.                 break;
  93.             case "6":
  94.                 powerInt = 6;
  95.                 break;
  96.             case "7":
  97.                 powerInt = 7;
  98.                 break;
  99.             case "8":
  100.                 powerInt = 8;
  101.                 break;
  102.             case "9":
  103.                 powerInt = 9;
  104.                 break;
  105.             case "10":
  106.                 powerInt = 10;
  107.                 break;
  108.             case "J":
  109.                 powerInt = 11;
  110.                 break;
  111.             case "Q":
  112.                 powerInt = 12;
  113.                 break;
  114.             case "K":
  115.                 powerInt = 13;
  116.                 break;
  117.             case "A":
  118.                 powerInt = 14;
  119.                 break;
  120.         }
  121.  
  122.         return typeInt * powerInt;
  123.     }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement