* # Arabic to Roman define('roman(n)s,ch,val,str') :(roman_end) roman roman = ge(n,4000) n :s(return) s = 'M1000 CM900 D500 CD400 C100 XC90 L50 XL40 X10 IX9 V5 IV4 I1 ' rom1 s span(&ucase) . ch break(' ') . val span(' ') = :f(rom2) str = str dupl(ch,(n / val)) n = remdr(n,val) :(rom1) rom2 roman = str :(return) roman_end * # Roman to Arabic define('arabic(n)s,ch,val,sum,x') :(arabic_end) arabic s = 'M1000 D500 C100 L50 X10 V5 I1 ' n = reverse(n) arab1 n len(1) . ch = :f(arab2) s ch break(' ') . val val = lt(val,x) (-1 * val) sum = sum + val; x = val :(arab1) arab2 arabic = sum :(return) arabic_end * # Test and display tstr = '2010 1999 1492 1066 476 ' tloop tstr break(' ') . year span(' ') = :f(out) r = roman(year) rstr = rstr year '=' r ' ' astr = astr r '=' arabic(r) ' ' :(tloop) out output = rstr; output = astr end