Skip to content

Instantly share code, notes, and snippets.

@e-mihaylin
Last active October 5, 2018 13:25
Show Gist options
  • Save e-mihaylin/145e3496abb528a844a67d07ea7ca0e0 to your computer and use it in GitHub Desktop.
Save e-mihaylin/145e3496abb528a844a67d07ea7ca0e0 to your computer and use it in GitHub Desktop.
const RomanNumerals = {
toRoman: v => {
let s = '';
RomanNumerals.numerals.forEach(n => {
while (v >= n[1]) {
s += n[0];
v -= n[1];
}
});
return s;
},
fromRoman: s => {
let v = 0;
RomanNumerals.numerals.forEach(function(n) {
while (s.substr(0, n[0].length) == n[0]) {
s = s.substr(n[0].length);
v += n[1];
}
});
return v;
},
numerals: [
['M', 1000],
['CM', 900],
['D', 500],
['CD', 400],
['C', 100],
['XC', 90],
['L', 50],
['XL', 40],
['X', 10],
['IX', 9],
['V', 5],
['IV', 4],
['I', 1]
]
};
// const RomanNumerals = {
// toRoman: number => {
// const digits = number.toString().split``,
// key = ['','C','CC','CCC','CD','D','DC','DCC','DCCC','CM',
// '','X','XX','XXX','XL','L','LX','LXX','LXXX','XC',
// '','I','II','III','IV','V','VI','VII','VIII','IX'];
// let result = '',
// i = 3;
// while (i--)
// result = (key[+digits.pop() + (i * 10)] || '') + result;
// return Array(+digits.join`` + 1).join`M` + result;
// },
// fromRoman: string => {
// string = string.toUpperCase();
// let validator = /^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/,
// token = /[MDLV]|C[MD]?|X[CL]?|I[XV]?/g,
// key = {M:1000,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1},
// num = 0,
// m;
// if (!(string && validator.test(string)))
// return false;
// while (m = token.exec(string))
// num += key[m[0]];
// return num;
// }
// }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment