Skip to content
Snippets Groups Projects
Commit bdbfeada authored by Thomas FABRE's avatar Thomas FABRE
Browse files

Refactor fourOfAKind with Roll

parent 99efb1c2
No related branches found
No related tags found
No related merge requests found
......@@ -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) {
......
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment