package com.galvarez.ttw.utils;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
public final class RomanNumbers {
private RomanNumbers() {
}
private static Map<String, Integer> ROMAN_NUMERALS = new LinkedHashMap<String, Integer>();
static {
ROMAN_NUMERALS.put("M", 1000);
ROMAN_NUMERALS.put("CM", 900);
ROMAN_NUMERALS.put("D", 500);
ROMAN_NUMERALS.put("CD", 400);
ROMAN_NUMERALS.put("C", 100);
ROMAN_NUMERALS.put("XC", 90);
ROMAN_NUMERALS.put("L", 50);
ROMAN_NUMERALS.put("XL", 40);
ROMAN_NUMERALS.put("X", 10);
ROMAN_NUMERALS.put("IX", 9);
ROMAN_NUMERALS.put("V", 5);
ROMAN_NUMERALS.put("IV", 4);
ROMAN_NUMERALS.put("I", 1);
}
public static String toRoman(int integer) {
StringBuilder res = new StringBuilder(integer / 5);
for (Entry<String, Integer> entry : ROMAN_NUMERALS.entrySet()) {
int value = entry.getValue();
int matches = integer / value;
for (int i = 0; i < matches; i++)
res.append(entry.getKey());
integer = integer % value;
}
return res.toString();
}
}