desislava_topuzakova

08. Hands Of Cards

May 27th, 2021
473
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class Demo {
  4. public static void main(String[] args) {
  5. Scanner scanner = new Scanner(System.in);
  6. //запис: име -> списък с карти (set)
  7. LinkedHashMap<String, Set<String>> playersCards = new LinkedHashMap<>();
  8.  
  9. String input = scanner.nextLine();
  10. while(!input.equals("JOKER")) {
  11. //input -> Peter: 2C, 4H, 9H, AS, QS -> split(": ") -> ["Peter", "2C, 4H, 9H, AS, QS"]
  12. String name = input.split(": ")[0];
  13. String [] inputCards = input.split(": ")[1].split(", ");
  14.  
  15. Set<String> cards = new HashSet<>(); //да няма повтарящи се карти
  16. Collections.addAll(cards, inputCards);
  17.  
  18. //името да го няма
  19. if(!playersCards.containsKey(name)) {
  20. playersCards.put(name, cards);
  21. } else { //името да го има
  22. //взимаме текущия списък -> добавяме новите карти
  23. Set<String> currentCards = playersCards.get(name);
  24. currentCards.addAll(cards);
  25. playersCards.put(name, currentCards);
  26. }
  27. input = scanner.nextLine();
  28. }
  29.  
  30. for (Map.Entry<String, Set<String>> player : playersCards.entrySet()) {
  31. //player: име -> списък с карти
  32. int points = getCardPoints(player.getValue());
  33. System.out.println(player.getKey() + ": " + points);
  34.  
  35. }
  36. }
  37.  
  38. private static int getCardPoints(Set<String> cards) {
  39. //намерим сумата от картите
  40. int sum = 0;
  41. Map<Character, Integer> pointsValues = getPointsValues();
  42. for (String card : cards) {
  43. int points = 0;
  44. //[номер][сила]
  45. //номер -> 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A
  46. //сила -> S, H, D, C
  47. //точки = точки от сила * точки от номер
  48. if(card.contains("10")) {
  49. //"10C" -> C
  50. char strength = card.charAt(2);
  51. points = 10 * pointsValues.get(strength);
  52. } else {
  53. //2C JD
  54. char number = card.charAt(0);
  55. char strength = card.charAt(1);
  56. points = pointsValues.get(strength) * pointsValues.get(number);
  57. }
  58. sum += points;
  59. }
  60.  
  61. return sum;
  62. }
  63.  
  64. private static Map<Character, Integer> getPointsValues() {
  65. Map<Character, Integer> points = new HashMap<>();
  66. points.put('1', 1);
  67. points.put('2', 2);
  68. points.put('3', 3);
  69. points.put('4', 4);
  70. points.put('5', 5);
  71. points.put('6', 6);
  72. points.put('7', 7);
  73. points.put('8', 8);
  74. points.put('9', 9);
  75. points.put('J', 11);
  76. points.put('Q', 12);
  77. points.put('K', 13);
  78. points.put('A', 14);
  79. points.put('S', 4);
  80. points.put('H', 3);
  81. points.put('D', 2);
  82. points.put('C', 1);
  83.  
  84. return points;
  85.  
  86. }
  87. }
  88.  
Advertisement
Add Comment
Please, Sign In to add comment