SophiYo

SandsOfGrainV2.0

Mar 7th, 2019
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.77 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 = 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.  
  66.                 case "increase" :
  67.  
  68.                     //nums.stream().map(e -> e + nums.stream().filter(x -> x >= value).findFirst().orElse(nums.get(nums.size() - 1)));
  69.  
  70.                     int value = initialSequence
  71.                             .stream()
  72.                             .filter(element-> element >= Integer.parseInt(token[1]))
  73.                             .findFirst()
  74.                             .orElse(initialSequence
  75.                             .get(initialSequence.size() - 1));
  76.                     initialSequence = initialSequence
  77.                             .stream()
  78.                             .map(element->
  79.                                     element + value)
  80.                             .collect(Collectors.toList());
  81.  
  82. //                    boolean isThere = true;
  83. //
  84. //                    for (int i = 0; i < initialSequence.size(); i++) {
  85. //
  86. //                         if (initialSequence.get(i) >= Integer.parseInt(token[1])) {
  87. //                             int value = initialSequence.get(i);
  88. //
  89. //                             for (int j = 0; j <= initialSequence.size()-1; j++) {
  90. //                                 initialSequence.set(j, initialSequence.get(j) + value);
  91. //                             }
  92. //
  93. //                             isThere = true;
  94. //                             break;
  95. //                         }  else {
  96. //                             isThere = false;
  97. //                         }
  98. //
  99. //                    }
  100. //                    if (!isThere){
  101. //                    int increaseValue = initialSequence.get(initialSequence.size() - 1);
  102. //
  103. //                    for (int p = 0; p <= initialSequence.size()-1; p++) {
  104. //                        initialSequence.set(p, initialSequence.get(p) + increaseValue);
  105. //                    }
  106. //
  107. //                }
  108.                     break;
  109.  
  110.                 case "collapse" :
  111.                     initialSequence.removeIf(element->
  112.                             element < Integer.parseInt(token[1])
  113.                     );
  114.                     break;
  115.                     default:
  116.                         break;
  117.             }
  118.         }
  119.  
  120.         System.out.println(initialSequence
  121.                 .toString()
  122.                 .replaceAll("[\\[|,\\]]", "")
  123.                 .trim());
  124.     }
  125. }
Advertisement
Add Comment
Please, Sign In to add comment