luoni

HandsOFCards

Jun 9th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. package DictionariesLambdaAndLINQ;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.HashMap;
  6. import java.util.HashSet;
  7. import java.util.LinkedHashMap;
  8. import java.util.List;
  9. import java.util.Map;
  10. import java.util.Scanner;
  11. import java.util.stream.Collectors;
  12.  
  13. public class HandsOfCards {
  14. public static void main(String[] args) {
  15. Scanner scanner = new Scanner(System.in);
  16.  
  17. String line = scanner.nextLine();;
  18. LinkedHashMap<String, List<String>> dictionary = new LinkedHashMap<>();
  19.  
  20. while (!line.equals("JOKER")) {
  21.  
  22. String[] input = line.split(": ");
  23. String playersName = input[0];
  24. String[] cardsArray = input[1].split(", ");// 2C, 4H, 9H, AS, QS
  25.  
  26. if (dictionary.containsKey(playersName)) {
  27. List<String> lst = new ArrayList<>();
  28. lst.addAll(dictionary.get(playersName));
  29. lst.addAll(Arrays.asList(cardsArray));
  30. dictionary.put(playersName, lst);
  31. } else {
  32. List<String> lst = new ArrayList<>();
  33. lst = Arrays.asList(cardsArray);
  34. dictionary.put(playersName, lst);
  35. }
  36.  
  37. line = scanner.nextLine();
  38. }
  39.  
  40. for (Map.Entry<String, List<String>> pair : dictionary.entrySet()) {
  41.  
  42. String cardArray = pair.getValue().toString().replaceAll("\\[|\\]","");
  43. List<String> distinctCards = Arrays.stream(cardArray.split(", ")).distinct().collect(Collectors.toList());
  44.  
  45. int sum = 0;
  46. for (String cardPair : distinctCards) {
  47. sum += PT(cardPair);
  48. }
  49.  
  50. System.out.printf("%s: %d%n", pair.getKey(), sum);
  51. }
  52. }
  53.  
  54. static int PT(String val) {
  55.  
  56. String left = val.substring(0, val.length() - 1);
  57. String right = val.substring(val.length() - 1);
  58.  
  59. HashMap<String, Integer> P = new HashMap<>();
  60. HashMap<String, Integer> T = new HashMap<>();
  61.  
  62. for (Integer i = 2; i <= 10; i++) {
  63. P.put(i.toString(), i);
  64. }
  65. P.put("J", 11);
  66. P.put("Q", 12);
  67. P.put("K", 13);
  68. P.put("A", 14);
  69.  
  70. T.put("S", 4);
  71. T.put("H", 3);
  72. T.put("D", 2);
  73. T.put("C", 1);
  74. int sum = P.get(left) * T.get(right);
  75.  
  76. return sum;
  77.  
  78. }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment