Deck exercise

 avatar
unknown
java
2 years ago
2.0 kB
5
Indexable
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

public class dec {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        List<Integer> firstPlayerCards = Arrays
                .stream(scanner.nextLine().split(" "))
                .map(Integer::parseInt)
                .collect(Collectors.toList());

        List<Integer> secondPlayerCards = Arrays
                .stream(scanner.nextLine().split(" "))
                .map(Integer::parseInt)
                .collect(Collectors.toList());

        while (!firstPlayerCards.isEmpty() && !secondPlayerCards.isEmpty()) {
            int firstCardPower = firstPlayerCards.get(0);
            int secondCardPower = secondPlayerCards.get(0);
            removeCard(firstPlayerCards);
            removeCard(secondPlayerCards);
            if (firstCardPower > secondCardPower) {
                addCards(firstCardPower, secondCardPower, firstPlayerCards);
            } else if (secondCardPower > firstCardPower) {
                addCards(secondCardPower, firstCardPower, secondPlayerCards);
            }
        }

        List<Integer> winner = findWinner(firstPlayerCards, secondPlayerCards);

        System.out.printf("%s player wins! Sum: %d",
                firstPlayerCards.size() > secondPlayerCards.size() ? "First" : "Second",
                winner.stream().mapToInt(Integer::intValue).sum()
        );


    }

    private static List<Integer> findWinner(List<Integer> firstPlayerCards, List<Integer> secondPlayerCards) {
        return firstPlayerCards.size() > secondPlayerCards.size() ? firstPlayerCards : secondPlayerCards;
    }

    private static void addCards(int cardA, int cardB, List<Integer> cardDeck) {
        cardDeck.add(cardA);
        cardDeck.add(cardB);
    }

    private static void removeCard(List<Integer> cardDeck) {
        cardDeck.remove(0);
    }
}
Editor is loading...