<H1>The BackPacker</h1> Determinates a player that has won the most, yet and chooses his last vote. <!-- language: lang-java --> public class BackPacker extends Human { public String takeSides(String history) { if (history == null || history.equals("")) return "evil"; String[] roundVotes = history.split(","); int players = roundVotes[0].length(); int[] winningPlayers = new int[players]; for (int round = 0; round < roundVotes.length; round++) { String nextRound = roundVotes[round]; boolean didGoodWin = didGoodWin(nextRound, players); for (int player = 0; player < nextRound.length(); player++) { boolean good = nextRound.charAt(player) == '1'; winningPlayers[player] += ((!didGoodWin && good) || (didGoodWin && !good)) ? 1 : 0; } } int bestScore = -1; for (int nextPlayer : winningPlayers) if (bestScore < nextPlayer) bestScore = nextPlayer; int bestPlayer = 0; for (int ii = 0; ii < players; ii++) { if (winningPlayers[ii] == bestScore) { bestPlayer = ii; break; } } if (roundVotes[roundVotes.length - 1].charAt(bestPlayer) == '1') return "good"; return "evil"; } private boolean didGoodWin(String round, int players) { int good = 0; for (char next : round.toCharArray()) good += next == '1' ? 1 : 0; return (good * 2) > players; } }