diff options
| author | mo khan <mo@mokhan.ca> | 2019-08-03 17:39:57 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2019-08-03 17:39:57 -0600 |
| commit | b569a44a1d2f2755855cd8bf1fdb34bae66c39c0 (patch) | |
| tree | e95624a8a5c46aef322c729e3a6f5ed9379e66e5 /src/Q8/BadmintonScoring.java | |
| parent | 3bdebf262814ea137f7fd9003c109d3cac9634a0 (diff) | |
determine longest point streak
Diffstat (limited to 'src/Q8/BadmintonScoring.java')
| -rw-r--r-- | src/Q8/BadmintonScoring.java | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/src/Q8/BadmintonScoring.java b/src/Q8/BadmintonScoring.java index 7c11918..048d6ee 100644 --- a/src/Q8/BadmintonScoring.java +++ b/src/Q8/BadmintonScoring.java @@ -1,5 +1,7 @@ package Q8; +import java.util.*; + public class BadmintonScoring { private int[][] scores; private static final int PLAYER1 = 0; @@ -10,11 +12,11 @@ public class BadmintonScoring { } public int getContinuousPointsPlayer1() { - return 0; + return this.longestStreakFor(PLAYER1); } public int getContinuousPointsPlayer2() { - return 0; + return this.longestStreakFor(PLAYER2); } public int getPlayer1Points() { @@ -30,4 +32,31 @@ public class BadmintonScoring { 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; + } } |
