package ua.nure.jfn.task3.converter;

import ua.nure.jfn.task3.Utils;

// Roman numerals.
public class RomanConverter {

	private static final String[] digits = {
			"\u216F", // M
			"\u216D\u216F", // CM
			"\u216E", // D
			"\u216D\u216E", // CD
			"\u216D", // C
			"\u2169\u216D", // XC
			"\u216C", // L
			"\u2169\u216C", // XL
			"\u2169", // X
			"\u2160\u2169", // IX
			"\u2164", // V
			"\u2160\u2164", // IV
			"\u2160" // I
	};

	private static final int[] values = {
			1000, // M
			900, // CM
			500, // D
			400, // CD
			100, // C
			90, // XC
			50, // L
			40, // XL
			10, // X
			9, // IX
			5, // V
			4, // IV
			1 // I
	};

	public static String convert(String str) {
		int num = Utils.parseInt(str);
		String result = "";

		for (int i = 0; i < values.length; i++) {
			while (num >= values[i]) {
				num -= values[i];
				result += digits[i];
			}
		}

		return result.toString();
	}

	public static void main(String[] args) {
		System.out.println("All the digits");
		for (int j = 0; j < digits.length; j++) {
			System.out.printf("%s: %s%n", digits[j], values[j]);
		}
		String s;
		System.out.println("~~~");
		s = "444";
		System.out.println(s);
		System.out.println(RomanConverter.convert(s));
		System.out.println("~~~");
		s = "3_999";
		System.out.println(s);
		System.out.println(RomanConverter.convert(s));
	}

}
