Untitled

mail@pastecode.io avatarunknown
plain_text
16 days ago
3.4 kB
2
Indexable
Never
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Archery_Champion {

    public static boolean indexInRange (ArrayList<Integer> numbers, int index){
        return index >= 0 && index < numbers.size();
    }

    public static int shootLeft (ArrayList<Integer> numbers, int index, int length){
        if (length > numbers.size()) length = length % numbers.size();

        int indexShoot = numbers.size() - length + index;

        if (indexShoot > numbers.size()-1) indexShoot = indexShoot - numbers.size();

        return indexShoot;
    }

    public static int shootRight (ArrayList<Integer> numbers, int index, int length){
        if (length > numbers.size()) length = length % numbers.size();

        int indexShoot = index + length;

        if (indexShoot > numbers.size()-1) indexShoot = indexShoot - numbers.size();

        return indexShoot;

    }

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        String text = sc.nextLine();
        String[] textParts = text.split("\\|");

        ArrayList<Integer> targets = new ArrayList<>();
        int points;
        int totalPoints = 0;

        for (String part : textParts){
            targets.add(Integer.parseInt(part));
        }

        while (true){
            String input = sc.nextLine();
            String[] inputParts = input.split("@");
            String command = inputParts[0];

            if (command.equals("Game over")) break;

            if (command.equals("Shoot Left")){
                int index = Integer.parseInt(inputParts[1]);
                int length = Integer.parseInt(inputParts[2]);
                if(indexInRange(targets, index)){
                    int indexShoot = shootLeft(targets, index, length);
                    int newValue = targets.get(indexShoot) - 5;
                    points = 5;
                    if (newValue < 0) {
                        points = 5 - Math.abs(newValue);
                        newValue = 0;
                    }
                    targets.set(indexShoot, newValue);
                    totalPoints = totalPoints + points;
                }
            }
            else if (command.equals("Shoot Right")) {
                int index = Integer.parseInt(inputParts[1]);
                int length = Integer.parseInt(inputParts[2]);
                if (indexInRange(targets, index)) {
                    int indexShoot = shootRight(targets, index, length);
                    int newValue = targets.get(indexShoot) - 5;
                    points = 5;
                    if (newValue < 0) {
                        points = 5 - Math.abs(newValue);
                        newValue = 0;
                    }
                    targets.set(indexShoot, newValue);
                    totalPoints = totalPoints + points;
                }
            }
            else if (command.equals("Reverse")) {
                Collections.reverse(targets);
            }
        }
        for (int i = 0; i < targets.size()-1; i++) {
            System.out.printf("%d - ", targets.get(i));
        }
        System.out.printf("%d\n", targets.get(targets.size()-1));

        System.out.printf("John finished the archery tournament with %d points!", totalPoints);
    }
}