From 99efb1c2915d27cef4fc3a655e956c7dc1c9d20e Mon Sep 17 00:00:00 2001 From: Thomas Fabre <tfabre@takima.fr> Date: Fri, 23 Jun 2023 14:18:17 +0200 Subject: [PATCH] Refactor twoPair with Roll --- src/main/java/io/takima/Yatzy.java | 26 ++++++++------------------ src/test/java/io/takima/YatzyTest.java | 6 +++--- 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/src/main/java/io/takima/Yatzy.java b/src/main/java/io/takima/Yatzy.java index 20a86b0..54a0a21 100644 --- a/src/main/java/io/takima/Yatzy.java +++ b/src/main/java/io/takima/Yatzy.java @@ -1,5 +1,6 @@ package io.takima; +import java.util.List; import java.util.Map; public final class Yatzy { @@ -54,26 +55,15 @@ public final class Yatzy { .orElse(0); } - public static int twoPair(int d1, int d2, int d3, int d4, int d5) { - int[] counts = new int[6]; - counts[d1 - 1]++; - counts[d2 - 1]++; - counts[d3 - 1]++; - counts[d4 - 1]++; - counts[d5 - 1]++; - int n = 0; - int score = 0; - for (int i = 0; i < 6; i += 1) { - if (counts[6 - i - 1] >= 2) { - n++; - score += (6 - i); - } - } - if (n == 2) { - return score * 2; - } else { + public static int twoPair(Roll roll) { + List<Integer> pairs = roll.countByDiceValueStream() + .filter(entry -> entry.getValue() >= 2) + .map(entry -> entry.getKey() * 2) + .toList(); + if (pairs.size() != 2) { return 0; } + return pairs.get(0) + pairs.get(1); } public static int fourOfAKind(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 dd3857e..b663f69 100644 --- a/src/test/java/io/takima/YatzyTest.java +++ b/src/test/java/io/takima/YatzyTest.java @@ -93,14 +93,14 @@ class YatzyTest { @Test void twoPairShouldSumTheScoreOfAllDiceWhichMatchWithDistinctPair() { assertAll( - () -> assertEquals(16, Yatzy.twoPair(3, 3, 5, 4, 5)), - () -> assertEquals(16, Yatzy.twoPair(3, 3, 5, 5, 5)) + () -> assertEquals(16, Yatzy.twoPair(roll(3, 3, 5, 4, 5))), + () -> assertEquals(16, Yatzy.twoPair(roll(3, 3, 5, 5, 5))) ); } @Test void twoPairShouldMatchIfThereIsTwoDistinctPair() { - assertEquals(0, Yatzy.twoPair(3, 3, 3, 3, 1)); + assertEquals(0, Yatzy.twoPair(roll(3, 3, 3, 3, 1))); } @Test -- GitLab