From b569a44a1d2f2755855cd8bf1fdb34bae66c39c0 Mon Sep 17 00:00:00 2001 From: mo khan Date: Sat, 3 Aug 2019 17:39:57 -0600 Subject: determine longest point streak --- src/Q8/BadmintonScoring.java | 33 +++++++++++++++++++++++++++++++-- src/Q8/BadmintonScoringTest.java | 8 ++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) (limited to 'src') 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; + } } diff --git a/src/Q8/BadmintonScoringTest.java b/src/Q8/BadmintonScoringTest.java index be8e5a0..c3f7809 100644 --- a/src/Q8/BadmintonScoringTest.java +++ b/src/Q8/BadmintonScoringTest.java @@ -56,4 +56,12 @@ public class BadmintonScoringTest extends TestCase { public void test_getPlayer2Points() { assertEquals(21, this.subject.getPlayer2Points()); } + + public void test_getContinuousPointsPlayer1() { + assertEquals(2, this.subject.getContinuousPointsPlayer1()); + } + + public void test_getContinuousPointsPlayer2() { + assertEquals(9, this.subject.getContinuousPointsPlayer2()); + } } -- cgit v1.2.3