Didart

Moving Target

Oct 23rd, 2021
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.42 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.List;
  3. import java.util.Scanner;
  4. import java.util.stream.Collectors;
  5.  
  6. public class MovingTarget {
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.  
  10.         List<Integer> sequenceOfTargets = Arrays
  11.                 .stream(scanner.nextLine().split("\\s+"))
  12.                 .map(Integer::parseInt)
  13.                 .collect(Collectors.toList());
  14.  
  15.         String input = scanner.nextLine();
  16.         while (!input.equals("End")) {
  17.             String[] element = input.split("\\s+");
  18.             String command = element[0];
  19.             switch (command) {
  20.                 case "Shoot":
  21.                     int indexShoot = Integer.parseInt(element[1]);
  22.                     int power = Integer.parseInt(element[2]);
  23.                     if (indexShoot >= 0 && indexShoot < sequenceOfTargets.size()) {
  24.                         sequenceOfTargets.set(indexShoot, sequenceOfTargets.get(indexShoot) - power);
  25.                         if (sequenceOfTargets.get(indexShoot) <= 0) {
  26.                             sequenceOfTargets.remove(indexShoot);
  27.                         }
  28.                     }
  29.                     break;
  30.                 case "Add":
  31.                     int indexToAdd = Integer.parseInt(element[1]);
  32.                     int value = Integer.parseInt(element[2]);
  33.                     if (indexToAdd >= 0 && indexToAdd < sequenceOfTargets.size()) {
  34.                         sequenceOfTargets.add(indexToAdd, value);
  35.                     } else {
  36.                         System.out.println("Invalid placement!");
  37.                     }
  38.                     break;
  39.                 case "Strike":
  40.                     int strikeIndex = Integer.parseInt(element[1]);
  41.                     int radius = Integer.parseInt(element[2]);
  42.                     int start = strikeIndex - radius;
  43.                     int end = strikeIndex + radius;
  44.                     if (start >= 0 && end < sequenceOfTargets.size()) {
  45.                         sequenceOfTargets.subList(start, end + 1).clear();
  46.                     } else {
  47.                         System.out.println("Strike missed!");
  48.                     }
  49.                     break;
  50.             }
  51.             input = scanner.nextLine();
  52.         }
  53.         System.out.print(Arrays.toString(new List[]{sequenceOfTargets})
  54.                 .replaceAll("[\\[\\]]", "")
  55.                 .replaceAll(", ", "|"));
  56.     }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment