Hello Team,

I was trying to attempt a previous Google code jam competition question - Robot 
Programming Strategy 
<https://codingcompetitions.withgoogle.com/codejam/round/00000000000516b9/0000000000134c90>
 

I am getting WA though I tried it with many test scenarios and it seems to 
be working fine. Can someone have a look and help in case I missed anything.

public class Solution {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int testCases = scanner.nextInt();
        List<String> resultList = new ArrayList<>();
        while (testCases-- > 0) {
            int n = scanner.nextInt();
            List<String> playerMoves = new ArrayList<>();
            while (n-- > 0) {
                playerMoves.add(scanner.next());
            }
            resultList.add(solveProblem(playerMoves));
        }
        int count = 0;
        for (String result : resultList) {
            System.out.println("Case #" + ++count + ": " + result);
        }
    }

    private static String solveProblem(List<String> playerMoves) {
        int biggestMove = playerMoves.stream().map(playerMove -> 
playerMove.length()).sorted(Comparator.reverseOrder()).findFirst().get();
        if(biggestMove > 500) return "IMPOSSIBLE";
        StringBuilder playerMove = new StringBuilder();
        for(int i=0; i < biggestMove;i++) {
            int index = i;
            List<Character> moves = playerMoves.stream().map(move -> 
move.charAt(index%move.length())).distinct().collect(Collectors.toList());
            if(moves.size() >= 3) {
                return "IMPOSSIBLE";
            } else if(moves.size() == 2){
                char winningChar = findWinner(moves.get(0), moves.get(1));
                playerMoves = playerMoves.stream().filter(move -> winningChar 
== move.charAt(index%move.length())).collect(Collectors.toList());
                playerMove.append(winningChar);
            } else if(moves.size() == 1) {
                playerMove.append(findWinner(moves.get(0), moves.get(0)));
                return playerMove.toString();
            }
        }
        return playerMove.toString();
    }

    private static char findWinner(char character, char character1) {
        switch (character) {
            case 'R':
                switch (character1) {
                    case 'R': return 'P';
                    case 'P': return 'P';
                    case 'S': return 'R';
                }
                break;
            case 'P':
                switch (character1) {
                    case 'R': return 'P';
                    case 'P': return 'S';
                    case 'S': return 'S';
                }
                break;
            case 'S':
                switch (character1) {
                    case 'R': return 'R';
                    case 'P': return 'S';
                    case 'S': return 'R';
                }
                break;
        }
        return ' ';
    }
}



-- 
You received this message because you are subscribed to the Google Groups 
"Google Code Jam" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-code+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-code/6b97a7fd-c0c4-4858-aa6d-eebfb725f9d3%40googlegroups.com.

Reply via email to