SophiYo

SantasGifts

Mar 7th, 2019
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.12 KB | None | 0 0
  1. package MidExamPreparation.MidExamRetake10Jan19;
  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.Collections;
  8. import java.util.List;
  9. import java.util.stream.Collectors;
  10.  
  11. public class O2SantasGifts {
  12.     public static void main(String[] args) throws IOException {
  13.         BufferedReader reader =
  14.             new BufferedReader(
  15.                 new InputStreamReader(
  16.                     System.in
  17.                 )
  18.             );
  19.  
  20.         int numberOfCommands = Integer.parseInt(reader.readLine());
  21.  
  22.         List<Integer> houses = Arrays.stream(reader.readLine().split("\\s+"))
  23.                 .map(Integer::parseInt)
  24.                 .collect(Collectors.toList());
  25.  
  26.         String line;
  27.         int lastPosition = 0;
  28.         int currentPosition =0;
  29.         for (int i = 0; i < numberOfCommands; i++) {
  30.             line = reader.readLine();
  31.  
  32.             String[] token = line.split("\\s+");
  33.             String command = token[0].toLowerCase();
  34.  
  35.             switch (command) {
  36.                 case "forward" :
  37.                     currentPosition += Integer.parseInt(token[1]);
  38.                     if (currentPosition >= 0 && currentPosition <= houses.size()-1) {
  39.                             houses.remove(currentPosition);
  40.                     } else {
  41.                         currentPosition -= Integer.parseInt(token[1]);
  42.                     }
  43.                     break;
  44.  
  45.                 case "back" :
  46.                     currentPosition -= Integer.parseInt(token[1]);
  47.                     if (currentPosition >= 0 && currentPosition <= houses.size()-1) {
  48.                         houses.remove(currentPosition);
  49.                     } else {
  50.                         currentPosition += Integer.parseInt(token[1]);
  51.                     }
  52.                     break;
  53.  
  54.                 case "gift" :
  55.                     if (Integer.parseInt(token[1]) >= 0 &&
  56.                             Integer.parseInt(token[1]) < houses.size()
  57.                     ) {
  58.                         houses.add(Integer.parseInt(token[1]), Integer.parseInt(token[2]));
  59.                         currentPosition = Integer.parseInt(token[1]);
  60.                     }
  61.                     break;
  62.  
  63.                 case "swap" :
  64.                     int first = houses.indexOf(Integer.parseInt(token[1]));
  65.                     int second = houses.indexOf(Integer.parseInt(token[2]));
  66.  
  67.                     if ((first >= 0 &&
  68.                             first < houses.size()) &&
  69.                             (second >= 0 &&
  70.                                     second < houses.size())
  71.                     ) {
  72.                         Collections.swap(houses, first, second);
  73.                     }
  74.                     break;
  75.                     default:
  76.                         break;
  77.             }
  78.             lastPosition = currentPosition;
  79.         }
  80.  
  81.         System.out.printf("Position: %d%n", lastPosition);
  82.         System.out.println(
  83.                 houses
  84.                         .toString()
  85.                         .replaceAll("[\\[\\]]", "")
  86.         );
  87.     }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment