Introdução
Neste laboratório, exploraremos como converter um inteiro em sua representação de numeral romano usando JavaScript. Usaremos uma tabela de consulta (lookup table) para mapear os valores inteiros para seus numerais romanos correspondentes e, em seguida, usaremos o método reduce para iterar sobre os valores e construir a representação de numeral romano do inteiro de entrada. Ao final deste laboratório, você terá uma compreensão mais profunda de como manipular arrays e strings em JavaScript para realizar tarefas complexas.
Convertendo Inteiro para Numeral Romano
Para converter um inteiro em sua representação de numeral romano, siga estes passos:
Abra o Terminal/SSH e digite
nodepara começar a praticar a codificação.A função
toRomanNumeral()aceita valores entre1e3999(inclusive).Crie uma tabela de consulta (lookup table) contendo arrays de 2 valores na forma de (valor romano, inteiro).
Use
Array.prototype.reduce()para percorrer os valores emlookupe dividir repetidamentenumpelo valor.Use
String.prototype.repeat()para adicionar a representação do numeral romano ao acumulador.
Aqui está o código para a função toRomanNumeral():
const toRomanNumeral = (num) => {
const lookup = [
["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]
];
return lookup.reduce((acc, [k, v]) => {
acc += k.repeat(Math.floor(num / v));
num = num % v;
return acc;
}, "");
};
Você pode testar a função com estes exemplos:
toRomanNumeral(3); // 'III'
toRomanNumeral(11); // 'XI'
toRomanNumeral(1998); // 'MCMXCVIII'
Resumo
Parabéns! Você concluiu o laboratório de Inteiro para Numeral Romano. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.