From 7f13704a29228435ef6250b36f7fc277b8354c62 Mon Sep 17 00:00:00 2001 From: mo khan Date: Sun, 4 Aug 2019 15:43:43 -0600 Subject: get max stroke used for each player --- src/Q8/BadmintonScoringWithStroke.java | 54 ++++++++++++++++++++++++++++-- src/Q8/BadmintonScoringWithStrokeTest.java | 40 +++++++++++++++++++++- src/Q8/Point.java | 26 ++++++++++---- 3 files changed, 111 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/Q8/BadmintonScoringWithStroke.java b/src/Q8/BadmintonScoringWithStroke.java index 55a1679..4ef5700 100644 --- a/src/Q8/BadmintonScoringWithStroke.java +++ b/src/Q8/BadmintonScoringWithStroke.java @@ -11,13 +11,63 @@ public class BadmintonScoringWithStroke extends BadmintonScoring { public BadmintonScoringWithStroke(ArrayList scores) { super(new int[0][0]); + this.scores = scores; } public String getMostUsedStrokePlayer1() { - return ""; + return maxStrokeFor(Point.PLAYER1); } public String getMostUsedStrokePlayer2() { - return ""; + return maxStrokeFor(Point.PLAYER2); + } + + private String maxStrokeFor(int player) { + int[] strokes = new int[] {0, 0, 0, 0, 0}; + for (Point point : this.scores) { + if (point.getPlayer() != player) continue; + + switch (point.getStroke()) { + case "slice": + strokes[0] += 1; + break; + case "drive": + strokes[1] += 1; + break; + case "smash": + strokes[2] += 1; + break; + case "drop": + strokes[3] += 1; + break; + case "net-shot": + strokes[4] += 1; + break; + } + } + int maxIndex = 0; + int maxValue = 0; + + for (int i = 0; i < strokes.length; i++) { + if (strokes[i] > maxValue) { + maxIndex = i; + maxValue = strokes[i]; + } + } + + switch (maxIndex) { + case 0: + return "slice"; + case 1: + return "drive"; + case 2: + return "smash"; + case 3: + return "drop"; + case 4: + return "net-shot"; + default: + return "unknown"; + } } } diff --git a/src/Q8/BadmintonScoringWithStrokeTest.java b/src/Q8/BadmintonScoringWithStrokeTest.java index 5086721..59e41fe 100644 --- a/src/Q8/BadmintonScoringWithStrokeTest.java +++ b/src/Q8/BadmintonScoringWithStrokeTest.java @@ -9,8 +9,42 @@ import junit.framework.TestCase; import junit.framework.TestSuite; public class BadmintonScoringWithStrokeTest extends TestCase { + private BadmintonScoringWithStroke subject; + private ArrayList points = + new ArrayList() { + { + add(new Point(Point.PLAYER1, "a", 1)); + add(new Point(Point.PLAYER1, "c", 2)); + add(new Point(Point.PLAYER2, "d", 1)); + add(new Point(Point.PLAYER2, "e", 2)); + add(new Point(Point.PLAYER2, "d", 3)); + add(new Point(Point.PLAYER2, "e", 4)); + add(new Point(Point.PLAYER2, "d", 5)); + add(new Point(Point.PLAYER1, "a", 3)); + add(new Point(Point.PLAYER1, "c", 4)); + add(new Point(Point.PLAYER2, "e", 6)); + add(new Point(Point.PLAYER2, "e", 7)); + add(new Point(Point.PLAYER2, "a", 8)); + add(new Point(Point.PLAYER2, "d", 9)); + add(new Point(Point.PLAYER2, "e", 10)); + add(new Point(Point.PLAYER2, "e", 11)); + add(new Point(Point.PLAYER2, "e", 12)); + add(new Point(Point.PLAYER2, "e", 13)); + add(new Point(Point.PLAYER2, "e", 14)); + add(new Point(Point.PLAYER2, "e", 15)); + add(new Point(Point.PLAYER1, "c", 5)); + add(new Point(Point.PLAYER2, "e", 16)); + add(new Point(Point.PLAYER2, "e", 17)); + add(new Point(Point.PLAYER2, "e", 18)); + add(new Point(Point.PLAYER2, "e", 19)); + add(new Point(Point.PLAYER2, "e", 20)); + add(new Point(Point.PLAYER2, "e", 21)); + } + }; + public BadmintonScoringWithStrokeTest(String testName) { super(testName); + this.subject = new BadmintonScoringWithStroke(this.points); } public static Test suite() { @@ -18,6 +52,10 @@ public class BadmintonScoringWithStrokeTest extends TestCase { } public void test_getMostUsedStrokePlayer1() { - assertTrue(true); + assertEquals("smash", subject.getMostUsedStrokePlayer1()); + } + + public void test_getMostUsedStrokePlayer2() { + assertEquals("net-shot", subject.getMostUsedStrokePlayer2()); } } diff --git a/src/Q8/Point.java b/src/Q8/Point.java index 9040516..4b0b86e 100644 --- a/src/Q8/Point.java +++ b/src/Q8/Point.java @@ -1,26 +1,40 @@ package Q8; public class Point { + public static final int PLAYER1 = 0; + public static final int PLAYER2 = 1; private int player; private int score; - private static final int PLAYER1 = 0; - private static final int PLAYER2 = 1; private String stroke; - public Point(int player, String stroke, int value) { + public Point(int player, String stroke, int score) { this.player = player; this.stroke = stroke; + this.score = score; } public int getPlayer() { - return 0; + return this.player; } public int getScore() { - return 0; + return this.score; } public String getStroke() { - return ""; + switch (this.stroke) { + case "a": + return "slice"; + case "b": + return "drive"; + case "c": + return "smash"; + case "d": + return "drop"; + case "e": + return "net-shot"; + default: + return "unknown"; + } } } -- cgit v1.2.3