Conversión de números enteros a números romanos

Beginner

This tutorial is from open-source community. Access the source code

Introducción

En este laboratorio, exploraremos cómo convertir un número entero a su representación en números romanos utilizando JavaScript. Utilizaremos una tabla de búsqueda para mapear los valores enteros a sus correspondientes números romanos, y luego utilizaremos el método reduce para iterar sobre los valores y construir la representación en números romanos del número entero de entrada. Al final de este laboratorio, tendrás una comprensión más profunda de cómo manipular matrices y cadenas en JavaScript para realizar tareas complejas.

Conversión de números enteros a números romanos

Para convertir un número entero a su representación en números romanos, sigue estos pasos:

  1. Abre la Terminal/SSH y escribe node para comenzar a practicar la codificación.

  2. La función toRomanNumeral() acepta valores entre 1 y 3999 (ambos inclusive).

  3. Crea una tabla de búsqueda que contenga arreglos de dos valores en la forma de (valor romano, entero).

  4. Utiliza Array.prototype.reduce() para recorrer los valores en lookup y dividir repetidamente num por el valor.

  5. Utiliza String.prototype.repeat() para agregar la representación en números romanos al acumulador.

Aquí está el código de la función 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;
  }, "");
};

Puedes probar la función con estos ejemplos:

toRomanNumeral(3); // 'III'
toRomanNumeral(11); // 'XI'
toRomanNumeral(1998); // 'MCMXCVIII'

Resumen

¡Felicidades! Has completado el laboratorio de conversión de números enteros a números romanos. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.