diff --git a/src/main/java/io/takima/Yatzy.java b/src/main/java/io/takima/Yatzy.java index 54a0a2186838fa097f37c74617a2f6bc9ef22d6f..0b594f00b56962aba16fd24904c762ef38c48169 100644 --- a/src/main/java/io/takima/Yatzy.java +++ b/src/main/java/io/takima/Yatzy.java @@ -66,20 +66,12 @@ public final class Yatzy { return pairs.get(0) + pairs.get(1); } - public static int fourOfAKind(int d1, int d2, int d3, int d4, int d5) { - int[] counts; - counts = new int[6]; - counts[d1 - 1]++; - counts[d2 - 1]++; - counts[d3 - 1]++; - counts[d4 - 1]++; - counts[d5 - 1]++; - for (int i = 0; i < 6; i++) { - if (counts[i] >= 4) { - return (i + 1) * 4; - } - } - return 0; + public static int fourOfAKind(Roll roll) { + return roll.countByDiceValueStream() + .filter(entry -> entry.getValue() >= 4) + .max(Map.Entry.comparingByKey()) + .map(entry -> entry.getKey() * 4) + .orElse(0); } public static int threeOfAKind(int d1, int d2, int d3, int d4, int d5) { diff --git a/src/test/java/io/takima/YatzyTest.java b/src/test/java/io/takima/YatzyTest.java index b663f692a4d1ccaad7e91c655252e19d51308a3d..18c976255abebc9341e5fdbe800495056e8f3595 100644 --- a/src/test/java/io/takima/YatzyTest.java +++ b/src/test/java/io/takima/YatzyTest.java @@ -108,7 +108,8 @@ class YatzyTest { assertAll( () -> assertEquals(9, Yatzy.threeOfAKind(3, 3, 3, 4, 5)), () -> assertEquals(15, Yatzy.threeOfAKind(5, 3, 5, 4, 5)), - () -> assertEquals(9, Yatzy.threeOfAKind(3, 3, 3, 3, 5)) + () -> assertEquals(9, Yatzy.threeOfAKind(3, 3, 3, 3, 5)), + () -> assertEquals(9, Yatzy.threeOfAKind(3, 3, 3, 3, 3)) ); } @@ -120,15 +121,15 @@ class YatzyTest { @Test void fourOfAKindShouldSumTheFourDiceWithTheSameValue() { assertAll( - () -> assertEquals(12, Yatzy.fourOfAKind(3, 3, 3, 3, 5)), - () -> assertEquals(20, Yatzy.fourOfAKind(5, 5, 5, 4, 5)), - () -> assertEquals(9, Yatzy.threeOfAKind(3, 3, 3, 3, 3)) + () -> assertEquals(12, Yatzy.fourOfAKind(roll(3, 3, 3, 3, 5))), + () -> assertEquals(20, Yatzy.fourOfAKind(roll(5, 5, 5, 4, 5))), + () -> assertEquals(12, Yatzy.fourOfAKind(roll(3, 3, 3, 3, 3))) ); } @Test void fourOfAKindShouldReturnZeroIfThereIsNoFourDiceWithTheSameValue() { - assertEquals(0, Yatzy.fourOfAKind(2, 2, 2, 5, 5)); + assertEquals(0, Yatzy.fourOfAKind(roll(2, 2, 2, 5, 5))); } @Test