Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Arrays;
- import java.util.List;
- import java.util.Scanner;
- import java.util.stream.Collectors;
- public class test {
- public static void main (String[] args) {
- Scanner Scanner = new Scanner(System.in);
- List<String> strings = Arrays.stream(Scanner.nextLine().split(" ")).collect(Collectors.toList());
- String input = Scanner.nextLine();
- while (!input.equals("3:1")) {
- String[] inputArray = input.split(" ");
- switch (inputArray[0]) {
- case "merge":
- // merge {startIndex} {endIndex}
- StringBuilder mergedElements = new StringBuilder();
- int endIndex;
- if (Integer.parseInt(inputArray[2]) >= strings.size()) {
- endIndex = strings.size();
- } else {
- endIndex = Integer.parseInt(inputArray[2]) + 1;
- }
- int startIndex;
- if (Integer.parseInt(inputArray[1]) < 0) {
- startIndex = 0;
- } else if (Integer.parseInt(inputArray[1]) > strings.size() - 1){
- startIndex = strings.size() - 1;
- } else {
- startIndex = Integer.parseInt(inputArray[1]);
- }
- for (int i = startIndex; i < endIndex; i++) {
- mergedElements.append(strings.get(i));
- strings.set(i, null);
- }
- int index = 0;
- for (int j = 0; j < strings.size(); j++) {
- if (strings.get(j) == null) {
- index = j;
- strings.remove(j);
- j--;
- }
- }
- strings.add(index, mergedElements.toString());
- break;
- case "divide":
- // divide {index} {partitions}
- StringBuilder stringToDivide = new StringBuilder();
- stringToDivide.append(strings.get(Integer.parseInt(inputArray[1])));
- strings.remove(Integer.parseInt(inputArray[1]));
- int partitionsLength;
- if (stringToDivide.length() % Integer.parseInt(inputArray[2]) == 0) {
- partitionsLength = stringToDivide.length() / Integer.parseInt(inputArray[2]);
- if (partitionsLength == 0) {
- partitionsLength = 1;
- }
- int index1 = 0;
- int indexToAdd = Integer.parseInt(inputArray[1]);
- while (index1 < stringToDivide.length()) {
- strings.add(indexToAdd, stringToDivide.substring(index1, Math.min(index1 + partitionsLength,stringToDivide.length())));
- index1 += partitionsLength;
- indexToAdd++;
- }
- } else {
- char lastChar = stringToDivide.charAt(stringToDivide.length() - 1);
- stringToDivide.deleteCharAt(stringToDivide.length() - 1);
- partitionsLength = stringToDivide.length() / Integer.parseInt(inputArray[2]);
- if (partitionsLength == 0) {
- partitionsLength = 1;
- }
- int index1 = 0;
- int indexToAdd = Integer.parseInt(inputArray[1]);
- while (index1 < stringToDivide.length()) {
- if (index1 < stringToDivide.length() - partitionsLength) {
- strings.add(indexToAdd, stringToDivide.substring(index1, Math.min(index1 + partitionsLength,stringToDivide.length())));
- index1 += partitionsLength;
- indexToAdd++;
- } else {
- strings.add(indexToAdd, stringToDivide.substring(index1, Math.min(index1 + partitionsLength,stringToDivide.length())) + lastChar);
- index1 += partitionsLength;
- indexToAdd++;
- }
- }
- }
- break;
- default:
- System.out.println("unknown command");
- break;
- }
- input = Scanner.nextLine();
- }
- for (int i = 0; i < strings.size(); i++) {
- System.out.print(strings.get(i));
- if (i != strings.size() - 1) {
- System.out.print(" ");
- } else {
- System.out.println("");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment