

TEST#1
class RomanNumerals {
static initMap() {
let _romanLetter = new Map();
_romanLetter.set("I", {value: "1", power: 0});
_romanLetter.set("IV", {value: "4", power: 0});
_romanLetter.set("V", {value: "5", power: 0});
_romanLetter.set("X", {value: "1", power: 1});
_romanLetter.set("XL", {value: "4", power: 1});
_romanLetter.set("L", {value: "5", power: 1});
_romanLetter.set("C", {value: "1", power: 2});
_romanLetter.set("CD", {value: "4", power: 2});
_romanLetter.set("D", {value: "5", power: 2});
_romanLetter.set("M", {value: "1", power: 3});
return _romanLetter;
}
static toRoman(number) {
const map = this.initMap();
let result = "";
let indexCheck = [];
[...map.entries()].forEach((_corr, _index) => {
number.toString().split("").reverse().forEach((element, index) => {
let word = "";
if(element != 0 && index == _corr[1].power && !indexCheck.includes(index)) {
if(element == 9) {
const first = [...map.entries()].find((tab) => tab[1].power == index)[0]
const second = [...map.entries()].find((tab) => tab[1].power == index+1)[0]
word = first + second;
result = word + result;
indexCheck.push(index)
}
if(element == _corr[1].value) {
word = _corr[0];
result = word + result;
indexCheck.push(index);
}
if(element > 1 && element < 4) {
word = _corr[0].repeat(element);
result = word + result;
indexCheck.push(index);
}
if(element > 5 && element < 9) {
const first = [...map.entries()].find((tab) => tab[1].power == index && tab[1].value == 5)[0];
const second = _corr[0].repeat(element-5);
word = first + second;
result = word + result;
indexCheck.push(index);
}
}
})
})
return result;
}
static fromRoman(string) {
}
}
TEST#2 [REUSSI]
class RomanNumerals {
static initMap() {
let _romanLetter = new Map();
_romanLetter.set("M", {value: 1000});
_romanLetter.set("CM", {value: 900});
_romanLetter.set("D", {value: 500});
_romanLetter.set("CD", {value: 400});
_romanLetter.set("C", {value: 100});
_romanLetter.set("XC", {value: 90});
_romanLetter.set("L", {value: 50});
_romanLetter.set("XL", {value: 40});
_romanLetter.set("X", {value: 10});
_romanLetter.set("IX", {value: 9});
_romanLetter.set("V", {value: 5});
_romanLetter.set("IV", {value: 4});
_romanLetter.set("I", {value: 1});
return _romanLetter;
}
static toRoman(number) {
const arrayCorres = this.initMap();
let result = "";
[...arrayCorres.entries()].forEach((_corr) => {
let quotient = Math.floor(number /_corr[1].value);
number -= _corr[1].value * quotient;
result += _corr[0].repeat(quotient);
})
return result;
}
static fromRoman(string) {
const arrayCorres = this.initMap();
let result = 0;
const arrayOfLetter = string.split("");
for(let i = 0; i < arrayOfLetter.length; i++) {
if(i < arrayOfLetter.length - 1) {
if(arrayCorres.get(arrayOfLetter[i]).value >= arrayCorres.get(string.split("")[i+1]).value) {
result += arrayCorres.get(arrayOfLetter[i]).value;
} else {
result += arrayCorres.get(arrayOfLetter[i+1]).value - (arrayCorres.get(arrayOfLetter[i]).value)
i++;
}
} else {
result += arrayCorres.get(arrayOfLetter[i]).value;
}
}
return result;
}
}