VB не ми е интересен. Ето на Python:
roman_map = {'':0, 'I':1, 'IV':4, 'V':5, 'IX':9, 'X':10, 'XL':40, 'L':50,
'XC':90, 'C':100, 'CD':400, 'D':500, 'CM':900, 'M':1000}
romans_sorted = [r for (r,a) in sorted( roman_map.items(),
cmp = lambda (r1,a1),(r2,a2): a2-a1 )]
def arabic (r):
if len(r) <= 1:
return roman_map[r]
k = (1,2)[ roman_map.has_key( r[:2] )]
return roman_map[ r[:k] ] + arabic( r[k:] )
def roman( a, s=""):
for r in romans_sorted:
rest = a - roman_map[r]
if rest >=0 and a>0:
return roman(rest, s + r)
return s
assert roman ( 1888 ) == 'MDCCCLXXXVIII'
assert arabic ( roman ( 1280 ) ) == 1280 #citizens
assert roman ( 1999 ) == 'MCMXCIX'
assert arabic ( roman ( 1999 ) ) == 1999
Някой помни ли книгата "1280 жители"?