ivxl
Version:
convert numbers to roman numerals and vice versa
2 lines (1 loc) • 655 B
JavaScript
var w=[1000,900,500,400,100,90,50,40,10,9,5,4,1],y=["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"];var B=(I,f="")=>{const h=w.findIndex((k)=>I>=k);return h===-1||!Number.isInteger(I)||I<1||I>4999?f:B(I-w[h],f+y[h])};var F=(I,f=0,h=I)=>{const k=y.findIndex((q)=>I.toUpperCase().startsWith(q));if(k!==-1)return F(I.slice(y[k].length),f+w[k],h);else return h.toUpperCase()===B(f)?f:0};var K=(I)=>F(String(I))||B(Number(I));var M={I:"\u2160",V:"\u2164",X:"\u2169",L:"\u216C",C:"\u216D",D:"\u216E",M:"\u216F"},O=(I)=>I.split("").map((f)=>M[f.toUpperCase()]||f).join("");export{O as romanToUnicode,F as romanToNumber,K as roman,B as numberToRoman};