View difference between Paste ID: MvHEk1wn and ptsB4X3B
SHOW: | | - or go back to the newest paste.
1
import java.util.ArrayList;
2
import java.util.Arrays;
3
import java.util.List;
4
import java.util.Scanner;
5
import java.util.stream.Collectors;
6
7
public class Main {
8
    public static void main(String[] args) {
9
        Scanner scanner = new Scanner(System.in);
10
        //"32 54 21 12 4 0 23" -> split(" ") -> ["32", "54", "21", "12", "4", "0", "23"]
11
        List<Integer> numbers = Arrays.stream(scanner.nextLine().split(" ")).map(Integer::parseInt).collect(Collectors.toList());
12
        String command = scanner.nextLine();
13
        while(!command.equals("End")){
14
            //•	"Add {number}" - add number at the end
15
            //•	"Insert {number} {index}" - insert number at given index
16
            //•	Remove {index} - remove that index
17
            //•	Shift left {count} - first number becomes last 'count' times
18
            //•	Shift right {count} - last number becomes first 'count' times
19
            String[] commandData = command.split("\\s+");
20
            String commandName = commandData[0];
21
            switch(commandName) {
22
                case "Add":
23
                    int numberToAdd = Integer.parseInt(commandData[1]);
24
                    numbers.add(numberToAdd);
25
                    break;
26
                case "Insert":
27
                    int numberToInsert = Integer.parseInt(commandData[1]);
28
                    int insertIndex = Integer.parseInt(commandData[2]);
29
                    if(isValidIndex(insertIndex, numbers.size())) {
30
                        numbers.add(insertIndex, numberToInsert);
31
                    } else {
32
                        System.out.println("Invalid index");
33
                    }
34
                    break;
35
                case "Remove":
36
                    int removedIndex = Integer.parseInt(commandData[1]);
37
                    if(isValidIndex(removedIndex, numbers.size())){
38
                        numbers.remove(removedIndex);
39
                    } else {
40
                        System.out.println("Invalid index");
41
                    }
42
                    break;
43
                case "Shift":
44
                    String shiftType = commandData[1]; //left or right
45
                    int count = Integer.parseInt(commandData[2]);
46
                    if (shiftType.equals("left")) {
47
                        shiftLeft(numbers, count);
48
                    } else if (shiftType.equals("right")) {
49
                        shiftRight(numbers, count);
50
                    }
51
                    break;
52
            }
53
54
55
            command = scanner.nextLine();
56
        }
57
58
        for (int number : numbers) {
59
            System.out.print(number + " ");
60
        }
61
62
    }
63
64
    private static void shiftRight(List<Integer> numbers, int count) {
65
        for (int i = 0; i < count; i++) {
66
            //взимаме последния елемент -> слагам го на първо място (индекс = 0) -> премахвам от последното място
67
            int lastElement = numbers.get(numbers.size() - 1);
68
            numbers.add(0, lastElement);
69
            numbers.remove(numbers.size() - 1);
70
        }
71
    }
72
73
    private static void shiftLeft(List<Integer> numbers, int count) {
74
        for (int i = 0; i < count; i++) {
75
            //взимам първия елемент -> слагам накрая -> премахвам от първото място
76
            int firstNumber = numbers.get(0);
77
            numbers.add(firstNumber);
78
            numbers.remove(0);
79
        }
80
81
    }
82
83
    public static boolean isValidIndex(int index, int size) {
84
        //true -> е валиден
85
        //false -> е невалиден
86
        return index >= 0 && index <= size - 1;
87
    }
88
}
89