Innym sposobem jest przechowywanie w dwuwymiarowej tablicy cyfr rzymskich dla 1, 5, 10, 50, 100, 500, 1000 i tak dalej. Przykład (w tablicy PHP):
$roman = array(
[0] = array(1=>"I", 5=>"V", 10=>"X"),
[1] = array(1=>"X", 5=>"L", 10=>"C"),
[2] = array(1=>"C", 5=>"D", 10=>"M"),
[3] = array(1=>"M", 5=>"^V", 10=>"^X"),
);
Następnie prześlij każdą cyfrę od prawej do lewej i zastosuj następujące tłumaczenie. Ustawić zmienną $ level = 0 i zwiększać swoją wartość o 1 po każdej cyfrze przetworzonej ('' w PHP a concats dwa ciągi)
1 => $roman[$level][1]
2 => $roman[$level][1].$roman[$level][1]
3 => $roman[$level][1].$roman[$level][1].$roman[$level][1]
4 => $roman[$level][1].$roman[$level][5]
5 => $roman[$level][5]
6 => $roman[$level][5].$roman[$level][1]
7 => $roman[$level][5].$roman[$level][1].$roman[$level][1]
8 => $roman[$level][5].$roman[$level][1].$roman[$level][1].$roman[$level][1]
9 => $roman[$level][1].$roman[$level][10]
Przykład: 1945
5 => $roman[0][5] = "V"
4 => $roman[1][1].$roman[1][5] = "XL"
9 => $roman[2][1].$roman[2][10] = "CM"
1 => $roman[3][1] = "M"
Więc przetłumaczona liczba to "MCMXLV"
Niestety, ta odpowiedź może nie w pełni odpowiedzieć na Twoje pytanie, ale mam nadzieję, że pomoże to w jakikolwiek sposób.
wygląda jak zadanie domowe, pachnie jak zadanie domowe ...;-) –
Tak, wiem ... Chciałbym móc udowodnić, że nie oszukuję. To jest właściwie zadanie domowe, dla studentów CS ... Po prostu, nie dla mnie, po prostu czytam książkę na własną rękę, i nie mam nauczyciela (lub dobrze poinformowanego przyjaciela), aby zapytać. –