diff --git a/src/main/java/io/takima/Yatzy.java b/src/main/java/io/takima/Yatzy.java
index a9cf0934178ad71dc3bc45024743b1d35c04f57a..c8a684ffdd3818525cf52b8923416c2a5aa6bcd0 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 d9d59209e01a1c3f915c2e813f2395be7c6286ec..689ffbbf4674e7f0da186e62934bee9fd7417880 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