17 lines
326 B
Text
17 lines
326 B
Text
fromRoman(s)={
|
|
my(v=Vecsmall(s),key=vector(88),cur,t=0,tmp);
|
|
key[73]=1;key[86]=5;key[88]=10;key[76]=50;key[67]=100;key[68]=500;key[77]=1000;
|
|
cur=key[v[1]];
|
|
for(i=2,#v,
|
|
tmp=key[v[i]];
|
|
if(!cur, cur=tmp; next);
|
|
if(tmp>cur,
|
|
t+=tmp-cur;
|
|
cur=0
|
|
,
|
|
t+=cur;
|
|
cur=tmp
|
|
)
|
|
);
|
|
t+cur
|
|
};
|