24 lines
622 B
Awk
24 lines
622 B
Awk
# syntax: GAWK -f ROMAN_NUMERALS_DECODE.AWK
|
|
BEGIN {
|
|
leng = split("MCMXC MMVIII MDCLXVI",arr," ")
|
|
for (i=1; i<=leng; i++) {
|
|
n = arr[i]
|
|
printf("%s = %s\n",n,roman2arabic(n))
|
|
}
|
|
exit(0)
|
|
}
|
|
function roman2arabic(r, a,i,p,q,u,ua,una,unr) {
|
|
r = toupper(r)
|
|
unr = "MDCLXVI" # each Roman numeral in descending order
|
|
una = "1000 500 100 50 10 5 1" # and its Arabic equivalent
|
|
split(una,ua," ")
|
|
i = split(r,u,"")
|
|
a = ua[index(unr,u[i])]
|
|
while (--i) {
|
|
p = index(unr,u[i])
|
|
q = index(unr,u[i+1])
|
|
a += ua[p] * ((p>q) ? -1 : 1)
|
|
}
|
|
return( (a>0) ? a : "" )
|
|
}
|