diff --git a/tcr-roman-numerals/src/main/java/fr/ippon/kata/numeral/Numerals.java b/tcr-roman-numerals/src/main/java/fr/ippon/kata/numeral/Numerals.java index bd4088ee9b04d45721bfdf49bbf8945b3dd78503..c7f75d4b0cf8854b78a4a1b509f434455ac0e6cb 100644 --- a/tcr-roman-numerals/src/main/java/fr/ippon/kata/numeral/Numerals.java +++ b/tcr-roman-numerals/src/main/java/fr/ippon/kata/numeral/Numerals.java @@ -1,5 +1,6 @@ package fr.ippon.kata.numeral; +import java.util.Map.Entry; import java.util.NavigableMap; import java.util.TreeMap; @@ -7,15 +8,12 @@ public class Numerals { private static final NavigableMap<Integer, String> CONVERSIONS = buildConversions(); public static String toRoman(int arabic) { - if (arabic >= 5) { - return "V" + toRoman(arabic - 5); + if (arabic == 0) { + return ""; } - if (arabic == 4) { - return "IV"; - } - - return "I".repeat(arabic); + Entry<Integer, String> highestKnownConversion = CONVERSIONS.floorEntry(arabic); + return highestKnownConversion.getValue() + toRoman(arabic - highestKnownConversion.getKey()); } private static NavigableMap<Integer, String> buildConversions() {