package Q8; import java.util.*; public class BadmintonScoring { protected int[][] scores; private static final int PLAYER1 = 0; private static final int PLAYER2 = 1; public BadmintonScoring(int[][] scores) { this.scores = scores; } public int getContinuousPointsPlayer1() { return this.longestStreakFor(PLAYER1); } public int getContinuousPointsPlayer2() { return this.longestStreakFor(PLAYER2); } public int getPlayer1Points() { return this.finalScoreFor(PLAYER1); } public int getPlayer2Points() { return this.finalScoreFor(PLAYER2); } private int finalScoreFor(int player) { int finalScore = 0; for (int[] items : scores) finalScore = items[player]; return finalScore; } private int longestStreakFor(int player) { int streak = 0; int longestStreak = 0; boolean lastWinner = false; for (int i = 0; i < scores.length; i++) { int score = scores[i][player]; int previousScore = i == 0 ? -1 : scores[i - 1][player]; boolean winner = score > previousScore; if (winner && lastWinner) { streak++; longestStreak = (streak > longestStreak) ? streak : longestStreak; } else streak = 0; lastWinner = winner; } return longestStreak; } private int winnerOf(int round) { int player1Score = scores[round][0]; int player1PreviousScore = scores[round - 1][0]; return player1Score > player1PreviousScore ? PLAYER1 : PLAYER2; } }