Question du test Java et Craftsmanship

Une classe Java qui convertit les nombres arabes en chiffres romains.

Difficile

Ce code

public class Numerals {

  private static final NavigableMap<Integer, String> CONVERSIONS = buildConversions();

  private Numerals() {}

  public static String toRoman(int arabic) {
    return highestKnownConversion(arabic).map(toRomanRepresentation(arabic)).orElse("");
  }

  private static Optional<Entry<Integer, String>> highestKnownConversion(int arabic) {
    return Optional.ofNullable(CONVERSIONS.floorEntry(arabic));
  }

  private static Function<Entry<Integer, String>, String> toRomanRepresentation(int arabic) {
    return conversion -> conversion.getValue() + toRoman(arabic - conversion.getKey());
  }

  private static NavigableMap<Integer, String> buildConversions() {
    NavigableMap<Integer, String> conversions = new TreeMap<>();

    conversions.put(1, "I");
    conversions.put(4, "IV");
    conversions.put(5, "V");
    conversions.put(9, "IX");
    conversions.put(10, "X");

    return conversions;
  }
}
Auteur: Clément DevosStatut : PubliéeQuestion passée 309 fois
Modifier
1
Évaluations de la communautéPersonne n'a encore évalué cette question, soyez le premier !