5kov

Anonymous Threat

Dec 12th, 2022 (edited)
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.90 KB | Software | 0 0
  1. import java.util.Arrays;
  2. import java.util.List;
  3. import java.util.Scanner;
  4. import java.util.stream.Collectors;
  5.  
  6. public class test {
  7.     public static void main (String[] args) {
  8.         Scanner Scanner = new Scanner(System.in);
  9.         List<String> strings = Arrays.stream(Scanner.nextLine().split(" ")).collect(Collectors.toList());
  10.  
  11.         String input = Scanner.nextLine();
  12.         while (!input.equals("3:1")) {
  13.             String[] inputArray = input.split(" ");
  14.             switch (inputArray[0]) {
  15.                 case "merge":
  16.                     // merge {startIndex} {endIndex}
  17.                     StringBuilder mergedElements = new StringBuilder();
  18.                     int endIndex;
  19.                     if (Integer.parseInt(inputArray[2]) >= strings.size()) {
  20.                         endIndex = strings.size();
  21.                     } else {
  22.                         endIndex = Integer.parseInt(inputArray[2]) + 1;
  23.                     }
  24.                     int startIndex;
  25.                     if (Integer.parseInt(inputArray[1]) < 0) {
  26.                         startIndex = 0;
  27.                     } else if (Integer.parseInt(inputArray[1]) > strings.size() - 1){
  28.                         startIndex = strings.size() - 1;
  29.                     } else {
  30.                         startIndex = Integer.parseInt(inputArray[1]);
  31.                     }
  32.                     for (int i = startIndex; i < endIndex; i++) {
  33.                         mergedElements.append(strings.get(i));
  34.                         strings.set(i, null);
  35.                     }
  36.                     int index = 0;
  37.                     for (int j = 0; j < strings.size(); j++) {
  38.                         if (strings.get(j) == null) {
  39.                             index = j;
  40.                             strings.remove(j);
  41.                             j--;
  42.                         }
  43.                     }
  44.                     strings.add(index, mergedElements.toString());
  45.                     break;
  46.                 case "divide":
  47.                     // divide {index} {partitions}
  48.                     StringBuilder stringToDivide = new StringBuilder();
  49.                     stringToDivide.append(strings.get(Integer.parseInt(inputArray[1])));
  50.                     strings.remove(Integer.parseInt(inputArray[1]));
  51.                     int partitionsLength;
  52.                     if (stringToDivide.length() % Integer.parseInt(inputArray[2]) == 0) {
  53.                         partitionsLength = stringToDivide.length() / Integer.parseInt(inputArray[2]);
  54.                         if (partitionsLength  == 0) {
  55.                             partitionsLength = 1;
  56.                         }
  57.  
  58.                         int index1 = 0;
  59.                         int indexToAdd = Integer.parseInt(inputArray[1]);
  60.                         while (index1 < stringToDivide.length()) {
  61.                             strings.add(indexToAdd, stringToDivide.substring(index1, Math.min(index1 + partitionsLength,stringToDivide.length())));
  62.                             index1 += partitionsLength;
  63.                             indexToAdd++;
  64.                         }
  65.  
  66.                     } else {
  67.                         char lastChar = stringToDivide.charAt(stringToDivide.length() - 1);
  68.                         stringToDivide.deleteCharAt(stringToDivide.length() - 1);
  69.                         partitionsLength = stringToDivide.length() / Integer.parseInt(inputArray[2]);
  70.  
  71.                         if (partitionsLength  == 0) {
  72.                             partitionsLength = 1;
  73.                         }
  74.  
  75.                         int index1 = 0;
  76.                         int indexToAdd = Integer.parseInt(inputArray[1]);
  77.                         while (index1 < stringToDivide.length()) {
  78.                             if (index1 < stringToDivide.length() - partitionsLength) {
  79.                                 strings.add(indexToAdd, stringToDivide.substring(index1, Math.min(index1 + partitionsLength,stringToDivide.length())));
  80.                                 index1 += partitionsLength;
  81.                                 indexToAdd++;
  82.                             } else {
  83.                                 strings.add(indexToAdd, stringToDivide.substring(index1, Math.min(index1 + partitionsLength,stringToDivide.length())) + lastChar);
  84.                                 index1 += partitionsLength;
  85.                                 indexToAdd++;
  86.                             }
  87.                         }
  88.  
  89.                     }
  90.                     break;
  91.                 default:
  92.                     System.out.println("unknown command");
  93.                     break;
  94.             }
  95.             input = Scanner.nextLine();
  96.         }
  97.         for (int i = 0; i < strings.size(); i++) {
  98.             System.out.print(strings.get(i));
  99.             if (i != strings.size() - 1) {
  100.                 System.out.print(" ");
  101.             } else {
  102.                 System.out.println("");
  103.             }
  104.         }
  105.     }
  106. }
  107.  
Advertisement
Add Comment
Please, Sign In to add comment