Advertisement
desislava_topuzakova

09. Force Book

Mar 2nd, 2023
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.54 KB | None | 0 0
  1. package Maps;
  2.  
  3. import java.util.*;
  4.  
  5. public class Forcebook_09 {
  6. public static void main(String[] args) {
  7. Scanner scanner = new Scanner(System.in);
  8.  
  9. String input = scanner.nextLine();
  10.  
  11. //отбор -> списък с играчите
  12. Map<String, List<String>> teams = new LinkedHashMap<>();
  13.  
  14. while (!input.equals("Lumpawaroo")) {
  15. if (input.contains("|")) {
  16. //input = "{force_side} | {force_user}" .split -> ["team", "player"]
  17. String team = input.split(" \\| ")[0]; //отбор
  18. String player = input.split(" \\| ")[1];// играча
  19.  
  20. //нямаме такъв отбор -> създаваме
  21. if (!teams.containsKey(team)) {
  22. teams.put(team, new ArrayList<>());
  23. }
  24.  
  25. //имаме такъв отбор -> добавяме играча към отбора, само ако го няма в НИКОЙ друг отбор
  26. boolean isExist = false; //играча го има в някой друг отбор
  27. for (List<String> list : teams.values()) {
  28. if (list.contains(player)) {
  29. isExist = true;
  30. }
  31. }
  32. //isExist = true => играчът го има в някой отбор
  33. //isExist = false => играчът го няма в никой отбор
  34. if (!isExist) {
  35. teams.get(team).add(player);
  36. }
  37.  
  38.  
  39. }
  40. else if (input.contains("->")) {
  41. //input = "{force_user} -> {force_side}".split -> ["player", "team"]
  42. String player = input.split(" -> ")[0];
  43. String team = input.split(" -> ")[1];
  44.  
  45. //1. премахваме играча от текущия отбор
  46. teams.entrySet().forEach(entry -> entry.getValue().remove(player));
  47.  
  48. //2. отборът, в който отива дали съществува
  49. if (teams.containsKey(team)) {
  50. List<String> currentPlayers = teams.get(team); //текущия списък на играчите
  51. currentPlayers.add(player); //добавяме играча към новия му отбор
  52. } else {
  53. //отборът, в който отива да не съществува
  54. teams.put(team, new ArrayList<>());
  55. teams.get(team).add(player);
  56. }
  57.  
  58. System.out.printf("%s joins the %s side!%n", player, team);
  59.  
  60. }
  61. input = scanner.nextLine();
  62. }
  63.  
  64. //премахваме отборите без играчи
  65. //entry: team (key) -> list of players (value)
  66. //filter -> оставя записите, които отговарят на условието
  67. //премахваме всички, които entry.getValue().size() <= 0
  68. teams.entrySet() //всички записи: team (key) -> list of players (value)
  69. .stream().filter(entry -> entry.getValue().size() > 0) //оставяме само отбори с играчи
  70. .forEach(entry -> {
  71. System.out.println("Side: " + entry.getKey() + ", Members: " + entry.getValue().size());
  72. entry.getValue().forEach(player -> System.out.println("! " + player));
  73. });
  74. }
  75. }
  76.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement