From e8e3d6feddf4cb4656052461a0c9e7daef42c220 Mon Sep 17 00:00:00 2001
From: Thomas Fabre <tfabre@takima.fr>
Date: Fri, 23 Jun 2023 13:24:26 +0200
Subject: [PATCH] Refactor yatzy with Roll

---
 src/main/java/io/takima/Yatzy.java     | 13 ++++---------
 src/test/java/io/takima/YatzyTest.java |  6 +++---
 2 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/src/main/java/io/takima/Yatzy.java b/src/main/java/io/takima/Yatzy.java
index a9cf093..c8a684f 100644
--- a/src/main/java/io/takima/Yatzy.java
+++ b/src/main/java/io/takima/Yatzy.java
@@ -11,15 +11,10 @@ public final class Yatzy {
         return roll.toStream().sum();
     }
 
-    public static int yatzy(int... dice) {
-        int[] counts = new int[6];
-        for (int die : dice) {
-            counts[die - 1]++;
-        }
-        for (int i = 0; i != 6; i++) {
-            if (counts[i] == 5) {
-                return 50;
-            }
+    public static int yatzy(Roll roll) {
+        long numberOfDistinctElements = roll.toStream().distinct().count();
+        if (numberOfDistinctElements == 1) {
+            return 50;
         }
         return 0;
     }
diff --git a/src/test/java/io/takima/YatzyTest.java b/src/test/java/io/takima/YatzyTest.java
index d9d5920..689ffbb 100644
--- a/src/test/java/io/takima/YatzyTest.java
+++ b/src/test/java/io/takima/YatzyTest.java
@@ -18,14 +18,14 @@ class YatzyTest {
     @Test
     void yatzyShouldScoreFiftyIfAllDicesHaveTheSameValue() {
         assertAll(
-            () -> assertEquals(50, Yatzy.yatzy(4, 4, 4, 4, 4)),
-            () -> assertEquals(50, Yatzy.yatzy(6, 6, 6, 6, 6))
+            () -> assertEquals(50, Yatzy.yatzy(roll(4, 4, 4, 4, 4))),
+            () -> assertEquals(50, Yatzy.yatzy(roll(6, 6, 6, 6, 6)))
         );
     }
 
     @Test
     void yatzyShouldScoreZeroIfAllDicesHaveNotTheSameValue() {
-        assertEquals(0, Yatzy.yatzy(6, 6, 6, 6, 3));
+        assertEquals(0, Yatzy.yatzy(roll(6, 6, 6, 6, 3)));
     }
 
     @Test
-- 
GitLab