Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Roman Numerals by Rafal.U
def checkio(data):
RL_10 = ['I',"II", "III", "IV","V","VI","VII","VIII","IX","X",'']
RL_100 = ['X','XX','XXX','XL','L','LX','LXX','LXXX','XC','C','']
RL_1000 = ['C','CC','CCC','CD','D','DC','DCC','DCCC','CM','M','']
counter = 0
lista_liczb = [] # lista do przechowywania cyfr
zmienna = data
i = 0
while zmienna > 0:
x = zmienna%10 # reszta z dzielenia przez 10 dajaca cyfry liczby od tyłu
lista_liczb.insert(i,x) # wpisanie do listy cyfr z jakich sie sklada liczba
zmienna -= x
zmienna /= 10
i += 1
counter += 1 # zliczanie ilości cyfr w liczbie
if counter == 1: # przeliczenie liczby jedno cyfrowej
indeks1 = lista_liczb[0] - 1
wynik = RL_10[indeks1]
return wynik
elif counter == 2: # przeliczenie liczb 2-cyfrowych
indeks1 = lista_liczb[0]-1
skl_1 = RL_10[indeks1]
indeks2 = int(lista_liczb[1])-1
skl_2 = RL_100[indeks2]
wynik = skl_2 + skl_1
return wynik
elif counter == 3: # przeliczenie liczby 3-cyfrowej
indeks1 = lista_liczb[0]-1
skl_1 = RL_10[indeks1]
indeks2 = int(lista_liczb[1])-1
skl_2 = RL_100[indeks2]
indeks3 = int(lista_liczb[2])-1
skl_3 = RL_1000[indeks3]
wynik = skl_3 + skl_2 + skl_1
return wynik
elif counter == 4: # przeliczenie liczby 4-cyfrowej
indeks1 = lista_liczb[0]-1
skl_1 = RL_10[indeks1]
indeks2 = int(lista_liczb[1])-1
skl_2 = RL_100[indeks2]
indeks3 = int(lista_liczb[2])-1
skl_3 = RL_1000[indeks3]
wynik = skl_3 + skl_2 + skl_1
indeks4 = int(lista_liczb[3])
skl_4 = indeks4*RL_1000[9]
wynik = skl_4 + skl_3 + skl_2 + skl_1 # dodanie stringów z tablicy stringów skl_4 = string liczby najwiekszej 4 cyfrowej np. 3000
return wynik
#replace this for solution
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert checkio(6) == 'VI', '6'
assert checkio(76) == 'LXXVI', '76'
assert checkio(499) == 'CDXCIX', '499'
assert checkio(3888) == 'MMMDCCCLXXXVIII', '3888'
Nov. 8, 2016