From 1d951a24051f3ef7b3689b16cd81181a0862263d Mon Sep 17 00:00:00 2001 From: Thomas Fabre <tfabre@takima.fr> Date: Fri, 23 Jun 2023 14:28:45 +0200 Subject: [PATCH] Refactor smallStraight with Roll --- src/main/java/io/takima/Yatzy.java | 26 ++++++++++---------------- src/test/java/io/takima/YatzyTest.java | 8 ++++---- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/main/java/io/takima/Yatzy.java b/src/main/java/io/takima/Yatzy.java index d8b6f79..c75cead 100644 --- a/src/main/java/io/takima/Yatzy.java +++ b/src/main/java/io/takima/Yatzy.java @@ -2,8 +2,11 @@ package io.takima; import java.util.List; import java.util.Map; +import java.util.stream.IntStream; public final class Yatzy { + private static final List<Integer> SMALL_STRAIGHT = IntStream.range(1, 6).boxed().toList(); + private Yatzy() { // This his a utility class which only implements static methods } @@ -20,13 +23,14 @@ public final class Yatzy { return 0; } - private static int sumDiceThatMatchWithValue(Roll roll, int value) { - return roll.toStream().filter(dice -> dice == value).sum(); - } public static int ones(Roll roll) { return sumDiceThatMatchWithValue(roll, 1); } + private static int sumDiceThatMatchWithValue(Roll roll, int value) { + return roll.toStream().filter(dice -> dice == value).sum(); + } + public static int twos(Roll roll) { return sumDiceThatMatchWithValue(roll, 2); } @@ -82,19 +86,9 @@ public final class Yatzy { .orElse(0); } - public static int smallStraight(int d1, int d2, int d3, int d4, int d5) { - int[] counts; - counts = new int[6]; - counts[d1 - 1] += 1; - counts[d2 - 1] += 1; - counts[d3 - 1] += 1; - counts[d4 - 1] += 1; - counts[d5 - 1] += 1; - if (counts[0] == 1 && - counts[1] == 1 && - counts[2] == 1 && - counts[3] == 1 && - counts[4] == 1) { + public static int smallStraight(Roll roll) { + List<Integer> sortedRoll = roll.toStream().sorted().boxed().toList(); + if (sortedRoll.equals(SMALL_STRAIGHT)) { return 15; } return 0; diff --git a/src/test/java/io/takima/YatzyTest.java b/src/test/java/io/takima/YatzyTest.java index 8c07f44..2a741e1 100644 --- a/src/test/java/io/takima/YatzyTest.java +++ b/src/test/java/io/takima/YatzyTest.java @@ -135,16 +135,16 @@ class YatzyTest { @Test void smallStraightShouldReturnFifteenIfDiceAreFromOneToFive() { assertAll( - () -> assertEquals(15, Yatzy.smallStraight(1, 2, 3, 4, 5)), - () -> assertEquals(15, Yatzy.smallStraight(2, 3, 4, 5, 1)) + () -> assertEquals(15, Yatzy.smallStraight(roll(1, 2, 3, 4, 5))), + () -> assertEquals(15, Yatzy.smallStraight(roll(2, 3, 4, 5, 1))) ); } @Test void smallStraightShouldReturnZeroIfDicesAreNotFromOneToFive() { assertAll( - () -> assertEquals(0, Yatzy.smallStraight(1, 2, 2, 4, 5)), - () -> assertEquals(0, Yatzy.smallStraight(2, 3, 4, 5, 6)) + () -> assertEquals(0, Yatzy.smallStraight(roll(1, 2, 2, 4, 5))), + () -> assertEquals(0, Yatzy.smallStraight(roll(2, 3, 4, 5, 6))) ); } -- GitLab