Преобразование целого числа в римское число

Beginner

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

Введение

В этом лабораторном занятии мы рассмотрим, как преобразовать целое число в его римское числовое представление с использованием JavaScript. Мы будем использовать таблицу поиска (lookup table), чтобы сопоставить целые значения с соответствующими римскими цифрами, а затем воспользуемся методом reduce, чтобы пройти по значениям и построить римское числовое представление входного целого числа. По завершении этого лабораторного занятия вы получите более глубокое понимание того, как манипулировать массивами и строками в JavaScript для выполнения сложных задач.

Преобразование целого числа в римское число

Для преобразования целого числа в его римское числовое представление следуйте этим шагам:

  1. Откройте Терминал/SSH и введите node, чтобы начать практиковаться в программировании.

  2. Функция toRomanNumeral() принимает значения от 1 до 3999 (включительно).

  3. Создайте таблицу поиска (lookup table), содержащую массивы из двух значений в виде (римское значение, целое число).

  4. Используйте Array.prototype.reduce(), чтобы пройти по значениям в lookup и последовательно разделить num на это значение.

  5. Используйте String.prototype.repeat(), чтобы добавить римское числовое представление к накопителю.

Вот код функции 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;
  }, "");
};

Вы можете протестировать функцию с помощью этих примеров:

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

Итог

Поздравляем! Вы завершили лабораторное занятие по преобразованию целых чисел в римские числа. Вы можете попрактиковаться в других лабораторных занятиях в LabEx, чтобы улучшить свои навыки.