Найти в Дзене
Javascript

Римские числа. Javascript

Ответ: Объяснение: Для начала давайте выпишем всевозможные римские цифры, которые мы будем использовать: I — 1, IV — 4, V — 5, IX — 9, X — 10, XL — 40, L — 50, XC — 90, C — 100, CD — 400, D — 500, CM — 900, M — 1000 Получаем, что представить целое число в виде римской цифры, необходимо найти последовательность из 13 римских символов, где их соответствующие значения складываются в целое число. Эта последовательность должна быть в порядке от наибольшего к наименьшему. Итак, чтобы представить данное целое число, мы ищем самый большой символ, который в него помещается. Мы вычитаем это, а затем ищем самый большой символ, который умещается в остатке, и так до тех пор, пока остаток не станет 0. Каждый из извлеченных символов добавляется к выходной строке римских цифр. Код для проверки: const convertIntToRoman = (n) => {
 if (n >= 1000) return 'M' + convertIntToRoman(n - 1000);
 if (n >= 500)
  return n >= 900
   ? 'CM' + convertIntToRoman(n - 900)
   : 'D' + convertIntToRoman(n - 500);
 if

Ответ:

Объяснение:

Для начала давайте выпишем всевозможные римские цифры, которые мы будем использовать:

  • 7 однобуквенных символов, каждый со своим значением;
  • правила вычитания дают дополнительные 6 символов.
I — 1, IV — 4, V — 5, IX — 9, X — 10, XL — 40, L — 50, XC — 90, C — 100, CD — 400, D — 500, CM — 900, M — 1000

Получаем, что представить целое число в виде римской цифры, необходимо найти последовательность из 13 римских символов, где их соответствующие значения складываются в целое число. Эта последовательность должна быть в порядке от наибольшего к наименьшему.

Cхема алгоритма
Cхема алгоритма

Итак, чтобы представить данное целое число, мы ищем самый большой символ, который в него помещается. Мы вычитаем это, а затем ищем самый большой символ, который умещается в остатке, и так до тех пор, пока остаток не станет 0. Каждый из извлеченных символов добавляется к выходной строке римских цифр.

Код для проверки:

-3
const convertIntToRoman = (n) => {
 if (n >= 1000) return 'M' + convertIntToRoman(n - 1000);

 if (n >= 500)
  return n >= 900
   ? 'CM' + convertIntToRoman(n - 900)
   : 'D' + convertIntToRoman(n - 500);

 if (n >= 100)
  return n >= 400
   ? 'CD' + convertIntToRoman(n - 400)
   : 'C' + convertIntToRoman(n - 100);

 if (n >= 50)
  return n >= 90
   ? 'XC' + convertIntToRoman(n - 90)
   : 'L' + convertIntToRoman(n - 50);

 if (n >= 10)
  return n >= 40
   ? 'XL' + convertIntToRoman(n - 40)
   : 'X' + convertIntToRoman(n - 10);

 if (n >= 5) return n == 9 ? 'IX' : 'V' + convertIntToRoman(n - 5);

 if (n > 0) return n == 4 ? 'IV' : 'I' + convertIntToRoman(n - 1);

 return '';
};

console.log(convertIntToRoman(3)); // III

console.log(convertIntToRoman(4)); // IV

console.log(convertIntToRoman(9)); // IX

console.log(convertIntToRoman(58)); // LVIII

console.log(convertIntToRoman(1994)); // MCMXCIV

Javascript