SHARE
TWEET

Anonymous Threat

Simo86 Feb 23rd, 2019 110 in 94 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.util.*;
  2. import java.util.stream.Collectors;
  3.  
  4. public class Lab {
  5.     public static void main(String[] args) {
  6.         Scanner scanner = new Scanner(System.in);
  7.  
  8.         List<String> program = Arrays.stream(scanner.nextLine()
  9.                 .split("\\s+"))
  10.                 .collect(Collectors.toList());
  11.         String command = scanner.nextLine();
  12.  
  13.         while (!command.equals("3:1")) {
  14.             String[] splitCommand = command.split("\\s+");
  15.             String action = splitCommand[0];
  16.             int startIndex = Integer.parseInt(splitCommand[1]);
  17.             int finalIndex = Integer.parseInt(splitCommand[2]);
  18.             startIndex = validateIndex(startIndex,program.size());
  19.             finalIndex = validateIndex(finalIndex,program.size());
  20.  
  21.             switch (action) {
  22.                 case "merge":
  23.                     if (startIndex == finalIndex){
  24.                         break;
  25.                     }else {
  26.                         String marge = String.join("", program.subList(startIndex, finalIndex + 1));
  27.                         program.subList(startIndex, finalIndex + 1).clear();
  28.                         program.add(startIndex, marge);
  29.                     }
  30.                     break;
  31.                 case "divide":
  32.                  int index =Integer.parseInt(splitCommand[1]);
  33.                  int partitions = Integer.parseInt(splitCommand[2]);
  34.                  List<String> result = divideEqually(program.get(index), partitions);
  35.                  program.remove(index);
  36.                  program.addAll(index,result);
  37.  
  38.                     break;
  39.             }
  40.  
  41.             command = scanner.nextLine();
  42.         }
  43.         for (String s : program) {
  44.             System.out.print(s + " ");
  45.         }
  46.     }
  47.  
  48.     private static List<String> divideEqually(String element, int partitions) {
  49.         int part = element.length() / partitions;
  50.         ArrayList<String> result = new ArrayList<>();
  51.         while (element.length() >= part){
  52.             result.add(element.substring(0,part));
  53.             element = element.substring(part);
  54.         }
  55.         if (result.size() == partitions) {
  56.             return result;
  57.         }else {
  58.             String concatLastTwoElements =
  59.                     result.get(result.size()-2)
  60.                     .concat(result.get(result.size()-1));
  61.             result.subList(result.size()-2,result.size()).clear();
  62.             result.add(concatLastTwoElements);
  63.             return result;
  64.         }
  65.     }
  66.  
  67.     static int validateIndex (int index, int length){
  68.         if (index < 0){
  69.             index = 0;
  70.         }if (index > length - 1){
  71.             index = length - 1;
  72.         }
  73.         return index;
  74.     }
  75. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top