Advertisement
Guest User

Untitled

a guest
Feb 19th, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.23 KB | None | 0 0
  1. package p01DatingApp;
  2.  
  3. import java.util.ArrayDeque;
  4. import java.util.Arrays;
  5. import java.util.Deque;
  6. import java.util.Scanner;
  7. import java.util.stream.Collectors;
  8.  
  9. public class Main {
  10.  
  11. public static void main(String[] args) {
  12.  
  13. Scanner scanner = new Scanner(System.in);
  14. Deque<Integer> malesStack = createStack(scanner);
  15. Deque<Integer> femalesQueue = createQueue(scanner);
  16.  
  17. scanner.close();
  18.  
  19. int matchesCount = startMatching(malesStack, femalesQueue);
  20. StringBuilder sb = createOutput(malesStack, femalesQueue, matchesCount);
  21.  
  22. System.out.println(sb);
  23.  
  24. }
  25.  
  26. private static StringBuilder createOutput(Deque<Integer> malesStack, Deque<Integer> femalesQueue, int matchesCount) {
  27. StringBuilder sb = new StringBuilder();
  28.  
  29. sb.append("Matches: " + matchesCount).append(System.lineSeparator());
  30.  
  31. if (malesStack.size() > 0) {
  32. sb.append("Males left: ");
  33.  
  34. for (int male : malesStack) {
  35. sb.append(male + ", ");
  36. }
  37. } else {
  38. sb.append("Males left: none, ");
  39. }
  40.  
  41. sb.replace(sb.length() - 2, sb.length(), "").append(System.lineSeparator());
  42.  
  43. if (femalesQueue.size() > 0) {
  44. sb.append("Females left: ");
  45.  
  46. for (int female : femalesQueue) {
  47. sb.append(female + ", ");
  48. }
  49. } else {
  50. sb.append("Females left: none, ");
  51. }
  52.  
  53. sb.replace(sb.length() - 2, sb.length(), "");
  54.  
  55. return sb;
  56. }
  57.  
  58. private static int startMatching(Deque<Integer> malesStack, Deque<Integer> femalesQueue) {
  59. int matchesCount = 0;
  60.  
  61. while (!malesStack.isEmpty() && !femalesQueue.isEmpty()) {
  62. int male = malesStack.peek();
  63. int female = femalesQueue.peek();
  64.  
  65. if (male % 25 == 0) {
  66. malesStack.pop();
  67. malesStack.pop();
  68. continue;
  69. }
  70.  
  71. if (female % 25 == 0) {
  72. femalesQueue.poll();
  73. femalesQueue.poll();
  74. continue;
  75. }
  76.  
  77. if (male == female) {
  78. matchesCount++;
  79. malesStack.pop();
  80. femalesQueue.poll();
  81. continue;
  82. }
  83.  
  84. femalesQueue.poll();
  85. malesStack.pop();
  86. int newMaleVal = male - 2;
  87.  
  88. if (newMaleVal > 0) {
  89. malesStack.push(male - 2);
  90. }
  91. }
  92.  
  93. return matchesCount;
  94. }
  95.  
  96. private static Deque<Integer> createQueue(Scanner scanner) {
  97. Deque<Integer> queue = Arrays.stream(scanner.nextLine().split("\\s+"))
  98. .map(Integer::parseInt)
  99. .filter(x -> x > 0)
  100. .collect(Collectors.toCollection(ArrayDeque::new));
  101.  
  102. return queue;
  103. }
  104.  
  105. private static Deque<Integer> createStack(Scanner scanner) {
  106. var stack = new ArrayDeque<Integer>();
  107.  
  108. Arrays.stream(scanner.nextLine().split("\\s+"))
  109. .map(Integer::parseInt)
  110. .filter(x -> x > 0)
  111. .forEach(x -> {
  112. stack.push(x);
  113. });
  114.  
  115. return stack;
  116. }
  117.  
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement