diff --git a/src/main/java/BowlingGameCalculator.java b/src/main/java/BowlingGameCalculator.java index 1fda65b..28ad78b 100644 --- a/src/main/java/BowlingGameCalculator.java +++ b/src/main/java/BowlingGameCalculator.java @@ -5,25 +5,16 @@ import java.util.regex.Pattern; public class BowlingGameCalculator { private static final Pattern SINGLE_VALUE_PATTERN = Pattern.compile("\\d"); - private static final Pattern SPARE_PATTERN = Pattern.compile("/[ -,]*(\\d)"); + private static final Pattern SPARE_PATTERN = Pattern.compile("(\\d)[ ,]*/[ -,]*(\\d)"); private static final int INITIAL_SCORE_VALUE = 0; public int score(String playerResult) { int playerScore = INITIAL_SCORE_VALUE; - /* - Matcher singleDigit = SINGLE_VALUE_PATTERN.matcher(playerResult); - while (singleDigit.find()) { - playerScore += Integer.parseInt(singleDigit.group()); - } - - Matcher spare = SPARE_PATTERN.matcher(playerResult); - Function spareScorer = (spareMatcher) -> 10 + Integer.parseInt(spare.group(1)); - playerScore = scoreMatch(playerScore, spare, spareScorer); - */ - playerScore += scoreMatch(SINGLE_VALUE_PATTERN.matcher(playerResult), (spareMatcher) -> Integer.parseInt(spareMatcher.group())); - playerScore += scoreMatch(SPARE_PATTERN.matcher(playerResult), (spareMatcher) -> 10 + Integer.parseInt(spareMatcher.group(1))); + playerScore += scoreMatch(SPARE_PATTERN.matcher(playerResult), (spareMatcher) -> + 10 + Integer.parseInt(spareMatcher.group(2)) + - Integer.parseInt(spareMatcher.group(1))); return playerScore; } diff --git a/src/test/java/BowlingCalculatorTest.java b/src/test/java/BowlingCalculatorTest.java index a63a75a..4a8f2bc 100644 --- a/src/test/java/BowlingCalculatorTest.java +++ b/src/test/java/BowlingCalculatorTest.java @@ -23,7 +23,8 @@ public class BowlingCalculatorTest { Arguments.of("worst game", "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", 0), // 20x 0 Arguments.of("some incomplete frames", "0,1,2,3,0,0,4,0,0,5,0,0,6,0,0,0,0,0,0,0", 21), Arguments.of("some other incomplete frames", "9- 9- 9- 9- 9- 9- 9- 9- 9- 9-", 90), - Arguments.of("roll after spare counts twice", "0,0 ,0,/ ,1,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0", 12) // Wurf nach Spare (/) zählt doppelt + Arguments.of("roll after spare counts twice", "0,0 ,0,/ ,1,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0", 12), // Wurf nach Spare (/) zählt doppelt + Arguments.of("spare counts 10", "5/ 5/ 5/ 5/ 5/ 5/ 5/ 5/ 5/ 5/5", 150) ); } } diff --git a/target/classes/BowlingGameCalculator.class b/target/classes/BowlingGameCalculator.class index 649e59f..c37f9cd 100644 Binary files a/target/classes/BowlingGameCalculator.class and b/target/classes/BowlingGameCalculator.class differ diff --git a/target/test-classes/BowlingCalculatorTest.class b/target/test-classes/BowlingCalculatorTest.class index b58c7dd..2757ae4 100644 Binary files a/target/test-classes/BowlingCalculatorTest.class and b/target/test-classes/BowlingCalculatorTest.class differ