13 lines
578 B
Text
13 lines
578 B
Text
* Roman to Arabic
|
|
define("arabic1(romans,arabic1)rdigit,adigit,b4")
|
|
romans1 = " 0 IX9 IV4 III3 II2 I1 VIII8 VII7 VI6 V5" :(arabic1_end)
|
|
arabic1 ident(romans) :s(return)
|
|
romans (break("IV") | rem) . b4 rem . rdigit = replace(b4,"MDCLX","CLXVI")
|
|
romans1 " " rdigit any("0123456789") . adigit
|
|
arabic1 = adigit arabic1 :(arabic1)
|
|
arabic1_end
|
|
* Test and display
|
|
tstr = " MMX MCMXCIX MCDXCII MLXVI CDLXXVI "
|
|
tstr span(' ') break(' ') $ r *?(astr = astr r '=' arabic1(r) ' ') fail
|
|
output = astr
|
|
end
|