Advertisement
desislava_topuzakova

08. Anonymous Threat

Feb 10th, 2023
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.49 KB | None | 0 0
  1. package Lists_Exercise;
  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().split("\\s+")) //["Ivo", "Johny", "Tony", "Bony", "Mony"]
  13. .collect(Collectors.toList()); //{"Ivo", "Johny", "Tony", "Bony", "Mony"}
  14.  
  15. String command = scanner.nextLine();
  16.  
  17. while (!command.equals("3:1")) {
  18. if (command.contains("merge")) {
  19. //command = "merge {startIndex} {endIndex}"
  20. int startIndex = Integer.parseInt(command.split(" ")[1]);
  21. int endIndex = Integer.parseInt(command.split(" ")[2]);
  22.  
  23. //проверка startIndex
  24. if (startIndex < 0) {
  25. startIndex = 0;
  26. }
  27.  
  28. //проверка за endIndex
  29. if (endIndex > texts.size() - 1) {
  30. endIndex = texts.size() - 1;
  31. }
  32.  
  33. //валидиране на индексите -> [0, дълж - 1]
  34. if (startIndex >= 0 && startIndex <= texts.size() - 1 && endIndex >= 0 && endIndex <= texts.size() - 1) {
  35. //валидни индекси -> преминем към изпълняване на командата
  36. //{"Ivo", "Johny", "Tony", "Bony", "Mony"}
  37. //merge 1 3
  38. //взимаме елементите и ги обединяваме
  39. String resultMerge = ""; //резултат от обединението на елементите
  40. for (int index = startIndex; index <= endIndex; index++) {
  41. String current = texts.get(index);
  42. resultMerge += current;
  43. }
  44.  
  45. //resulMerge = "JohnyTonyBony"
  46. //премахваме обединените елементи
  47. for (int index = startIndex; index <= endIndex; index++) {
  48. texts.remove(startIndex);
  49. }
  50. //{"Ivo", "Mony"}
  51.  
  52. //добавяме обединението на startIndex
  53. texts.add(startIndex, resultMerge);
  54. //{"Ivo", "JohnyTonyBony", "Mony"}
  55. }
  56. } else if (command.contains("divide")) {
  57. //command = "divide {index} {partitions}"
  58. int index = Integer.parseInt(command.split(" ")[1]);
  59. int parts = Integer.parseInt(command.split(" ")[2]); //брой на частите
  60.  
  61. //валидираме индекса, от който ще взимаме текст
  62. if (index >= 0 && index <= texts.size() - 1) {
  63. //{"abcdef", "ghi", "jkl"}
  64. //divide 0 3
  65. String textForDivide = texts.get(index); //"abcdef"
  66. texts.remove(index);
  67. //{"ghi", "jkl"}
  68.  
  69. //1. колко символа ще има всяка част
  70. int countSymbolsPerPart = textForDivide.length() / parts;
  71.  
  72. //всички равни части без последната
  73. int beginIndex = 0; //index в текста за деление
  74. for (int part = 1; part < parts; part++) {
  75. String textPerPart = textForDivide.substring(beginIndex, beginIndex + countSymbolsPerPart);
  76. texts.add(index, textPerPart);
  77. index++; //място на поставяне на разбитата част в главния списък
  78. beginIndex += countSymbolsPerPart;
  79. }
  80.  
  81. //последната част
  82. String textLastParts = textForDivide.substring(beginIndex, textForDivide.length());
  83. texts.add(index, textLastParts);
  84. }
  85.  
  86. }
  87.  
  88.  
  89. command = scanner.nextLine();
  90. }
  91.  
  92. //!!!!отпчетваме списък с тесктовете -> String.join!!!
  93. System.out.println(String.join(" ", texts));
  94.  
  95. /*for (String text : texts) {
  96. System.out.print(text + " ");
  97. }*/
  98. }
  99. }
  100.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement