SophiYo

GrainsOfSand

Mar 7th, 2019
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.32 KB | None | 0 0
  1. package MidExamPreparation.MidExam27August18;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.Arrays;
  7. import java.util.List;
  8. import java.util.stream.Collectors;
  9.  
  10. public class O2GrainsOfSands {
  11.     public static void main(String[] args) throws IOException {
  12.         BufferedReader reader =
  13.             new BufferedReader(
  14.                 new InputStreamReader(
  15.                     System.in
  16.                 )
  17.             );
  18.  
  19.         List<Integer> initialSequence = Arrays.stream(reader.readLine().split("\\s+"))
  20.                 .map(Integer::parseInt)
  21.                 .collect(Collectors.toList());
  22.  
  23.         String line;
  24.  
  25.         while (!"Mort".equalsIgnoreCase(line= reader.readLine())) {
  26.             String[] token = line.split("\\s+");
  27.  
  28.             String command = token[0].toLowerCase();
  29.  
  30.             switch (command) {
  31.                 case "add" :
  32.                     initialSequence.add(Integer.parseInt(token[1]));
  33.                     break;
  34.  
  35.                 case "remove" :
  36.                     if (initialSequence.contains(Integer.parseInt(token[1]))) {
  37.                        initialSequence
  38.                                 .stream()
  39.                                 .filter(element-> element==Integer.parseInt(token[1]))
  40.                                 .findFirst()
  41.                                  .map(initialSequence::remove);
  42.                     } else {
  43.                         if (Integer.parseInt(token[1]) >= 0
  44.                                 && Integer.parseInt(token[1]) < initialSequence.size()) {
  45.                             initialSequence.remove(Integer.parseInt(token[1]));
  46.                         }
  47.                     }
  48.                     break;
  49.  
  50.                 case "replace" :
  51.                     if (initialSequence.contains(Integer.parseInt(token[1]))) {
  52.                         initialSequence
  53.                                 .stream()
  54.                                 .filter(element-> element==Integer.parseInt(token[1]))
  55.                                 .findFirst()
  56.                                 .map(element ->
  57.                                         initialSequence
  58.                                                 .set(initialSequence.indexOf(element),
  59.                                                         Integer.parseInt(token[2])
  60.                                                 )
  61.                                 );
  62.                     }
  63.                     break;
  64.  
  65.                 case "increase" :
  66.                     if (initialSequence.contains(Integer.parseInt(token[1]))) {
  67.                         initialSequence
  68.                                 .stream()
  69.                                 .filter(element -> element >= Integer.parseInt(token[1]))
  70.                                 .forEach(element -> initialSequence
  71.                                         .set(initialSequence.indexOf(element),
  72.                                                 initialSequence.get(element)
  73.                                                         +
  74.                                                         Integer.parseInt(token[2])
  75.                                         ));
  76.                     } else {
  77.                         int increaseValue = initialSequence.get(initialSequence.size() - 1);
  78.  
  79. //                        for (int i = 0; i <= initialSequence.size()-1; i++) {
  80. //                            initialSequence.set(i, initialSequence.get(i) + increaseValue);
  81. //                        }
  82.                        
  83.                         initialSequence
  84.                                 .stream()
  85.                                 .forEach(element->
  86.                                         initialSequence
  87.                                 .set(element, initialSequence.get(element) + increaseValue));
  88.  
  89.                                            }
  90.                     break;
  91.  
  92.                 case "collapse" :
  93.                     initialSequence.removeIf(element->
  94.                             element < Integer.parseInt(token[1])
  95.                     );
  96.                     break;
  97.                     default:
  98.                         break;
  99.             }
  100.         }
  101.  
  102.         System.out.println(initialSequence
  103.                 .toString()
  104.                 .replaceAll("[\\[|,\\]]", "")
  105.                 .trim());
  106.     }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment