Advertisement
desislava_topuzakova

08. Anonymous Threat

Jun 17th, 2022
1,081
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.91 KB | None | 0 0
  1. package Lists;
  2.  
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import java.util.Scanner;
  6. import java.util.stream.Collectors;
  7.  
  8. public class AnonymousThreat_08 {
  9. public static void main(String[] args) {
  10. Scanner scanner = new Scanner(System.in);
  11.  
  12. List<String> texts = Arrays.stream(scanner.nextLine() //"Ivo Johny Tony Bony Mony"
  13. .split(" ")) //["Ivo", "Johny", "Tony", "Bony", "Mony"]
  14. .collect(Collectors.toList()); //{"Ivo", "Johny", "Tony", "Bony", "Mony"}
  15.  
  16. String command = scanner.nextLine();
  17.  
  18. while (!command.equals("3:1")) {
  19. //1. merge {startIndex} {endIndex}
  20. //2. divide {index} {partitions}
  21. if (command.contains("merge")) {
  22. //command = "merge 1 3".split(" ") -> ["merge", "1", "3"]
  23. int startIndex = Integer.parseInt(command.split(" ")[1]);
  24. int endIndex = Integer.parseInt(command.split(" ")[2]);
  25. //{"Ivo", "Johny", "Tony", "Bony", "Mony"}
  26. //проверка за start index
  27. if (startIndex < 0) {
  28. startIndex = 0;
  29. }
  30. //проверка за end index
  31. if (endIndex > texts.size() - 1) {
  32. endIndex = texts.size() - 1;
  33. }
  34.  
  35. //валидираме индексите -> [0, дълж - 1]
  36. boolean isValidIndexes = startIndex <= texts.size() - 1 && endIndex >= 0 && startIndex < endIndex;
  37.  
  38. if (isValidIndexes) {
  39. //{"Ivo", "Johny", "Tony", "Bony", "Mony"}
  40. //merge 1 3
  41. String resultMerge = "";
  42. for (int index = startIndex; index <= endIndex; index++) {
  43. String currentText = texts.get(index);
  44. resultMerge += currentText;
  45. }
  46. //resultMerge = "JohnyTonyBony"
  47. //remove
  48. for (int index = startIndex; index <= endIndex; index++) {
  49. texts.remove(startIndex);
  50. }
  51. //{"Ivo", "Mony"}
  52. texts.add(startIndex,resultMerge);
  53. //{"Ivo", "JohnyTonyBony", "Mony"}
  54. }
  55. } else if (command.contains("divide")) {
  56. //command = "divide 0 3".split(" ") -> ["divide", "2", "3"]
  57. int index = Integer.parseInt(command.split(" ")[1]);
  58. int parts = Integer.parseInt(command.split(" ")[2]); //брой на частите
  59. //{abcdef, ghi, jkl}
  60. String elementForDivide = texts.get(index); //"abcdef"
  61. texts.remove(index);
  62. //{ghi, jkl}
  63.  
  64. //колко елемента ще има всяка една част
  65. int partSize = elementForDivide.length() / parts; //2 елемента във всяка част
  66.  
  67. int beginIndexOfText = 0;
  68. for (int part = 1; part < parts; part++) {
  69. texts.add(index, elementForDivide.substring(beginIndexOfText, beginIndexOfText + partSize));
  70. //{ab, cd, ghi, jkl}
  71. index++; // 2
  72. beginIndexOfText += partSize; // 4
  73. }
  74. //добавяме останалите символи към последната част
  75. texts.add(index, elementForDivide.substring(beginIndexOfText)); //не зададем краен индекс -> взима до последния
  76. }
  77. command = scanner.nextLine();
  78. }
  79.  
  80. //!!! печатаме списък с текстове !!!
  81. System.out.println(String.join(" ", texts));
  82.  
  83. /* for (String text : texts) {
  84. System.out.print(text + " ");
  85. }*/
  86. }
  87. }
  88.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement