Advertisement
LoraOrliGeo

P8_AnonymousThreat*_Lists_Ex

Apr 8th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.12 KB | None | 0 0
  1. package feb20_Lists_Exercises;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.List;
  6. import java.util.Scanner;
  7. import java.util.stream.Collectors;
  8.  
  9. public class P8_AnonymousThreat {
  10.     public static void main(String[] args) {
  11.         @SuppressWarnings("resource")
  12.  
  13.         Scanner sc = new Scanner(System.in);
  14.  
  15.         List<String> elements = Arrays.stream(sc.nextLine().split("\\s+")).collect(Collectors.toList());
  16.  
  17.         String input = "";
  18.  
  19.         while (!"3:1".equals(input = sc.nextLine())) {
  20.             String[] data = input.split("\\s+");
  21.             String command = data[0];
  22.  
  23.             switch (command) {
  24.             case "merge":
  25.                 int startIndex = Integer.parseInt(data[1]);
  26.                 int endIndex = Integer.parseInt(data[2]);
  27.                 startIndex = validateIndex(startIndex, elements.size());
  28.                 endIndex = validateIndex(endIndex, elements.size());
  29.                 String concatElements = String.join("", elements.subList(startIndex, endIndex + 1));
  30.                 elements.subList(startIndex, endIndex + 1).clear();
  31.                 elements.add(startIndex, concatElements);
  32.                 break;
  33.             case "divide":
  34.                 int index = Integer.parseInt(data[1]);
  35.                 int partitions = Integer.parseInt(data[2]);
  36.  
  37.                 List<String> result = dividedEquality(elements.get(index), partitions);
  38.                 elements.remove(index);
  39.                 elements.addAll(index, result);
  40.                 break;
  41.             }
  42.         }
  43.        
  44.         System.out.println(String.join(" ", elements));
  45.     }
  46.  
  47.     private static List<String> dividedEquality(String element, int partitions) {
  48.         int part = element.length() / partitions;
  49.         List<String> result = new ArrayList<>();
  50.  
  51.         while (element.length() >= part) {
  52.             result.add(element.substring(0, part));
  53.             element = element.substring(part);
  54.         }
  55.  
  56.         if (result.size() == partitions) {
  57.             return result;
  58.         } else {
  59.             String concatLastTwoElements = result.get(result.size() - 2).concat(result.get(result.size() - 1));
  60.             result.subList(result.size() - 2, (result.size())).clear();;
  61.             result.add(concatLastTwoElements);
  62.             return result;
  63.         }
  64.     }
  65.  
  66.     public static int validateIndex(int index, int lenght) {
  67.         if (index < 0) {
  68.             index = 0;
  69.         } else if (index > lenght - 1) {
  70.             index = lenght - 1;
  71.         }
  72.         return index;
  73.     }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement