Римские цифры от 1 до 10 с переводом: Как как пишется римские цифры от 1 до 10

Древняя информатика: Давайте создадим преобразователь римских цифр с нуля 🏺📜

Сегодня мы отправимся в путешествие во времени! Вернемся к году CCXVII, то есть к 217, вплоть до железного века: Римская империя.

Но сегодня мы не будем исследовать Колизей или Пантеон, не будем разговаривать с легионерами или ходить по Cursus publicus. Вместо этого мы узнаем о концепции, которая позволила создать большую часть римской экономики, а также некоторые из самых великолепных архитектурных шедевров. Сегодняшняя тема — римские цифры.

Подождите, как же CCXVII переводится как 217?

Очень хороший вопрос! Давайте проанализируем.

(Короткая интерлюдия: Если вы не знали, цифры, к которым мы привыкли (0-9), называются «арабскими цифрами», так как они возникли в западной части Аравии и Северной Африке. А знаете ли вы, что фраза, которую я там нацарапал, даже не соответствует действительности? Как @youngdad33 Как отмечалось в комментариях, хорошо известные цифры с основанием 10 произошли из Индии, попали в арабскую часть мира, затем были обнаружены европейцами во время крестовых походов и, следовательно, ошибочно названы «арабскими цифрами».

ТИЛ. 😀)

Прежде всего, что означают C, X, V и I?

В этой таблице представлен обзор римских цифр и их значений:

Римская цифра Значение
я 1
В 5
Х 10
Л 50
С 100
Д 500
М 1000

Точно так же, как числа с основанием 10, римские числа состоят из цифр. Цифры, однако, не совсем соответствуют разным значениям в разных местах (например, 217 будет 2 * 100, 1 * 10 и 7 * 1), но вместо этого они складываются в большее число. Количество одинаковых цифр соответствует значению. Поэтому мы могли бы переписать

CCXVII от до C + C + X + V + I + I . В приведенной выше таблице это переводится как 100 + 100 + 10 + 5 + 1 + 1 = 217 .

Так, например, число 4 можно записать как IIII , верно? Почти! Хотя это могло быть интуитивным ответом, изобретатели решили, что это не тот путь. Вместо этого все, что нельзя записать сложением максимум трех одинаковых цифр, записывается как вычитание из следующего большего числа. Итак, вместо того, чтобы писать 1 + 1 + 1 + 1 = 4 , запишем 5 - 1 = 4 , римскими цифрами V - I или просто IV .

Таким образом, это означает, что если цифра A ( осталось от цифры B) меньше цифры B, она вычитается, в противном случае добавляется. Для иллюстрации:

 IV --> I < V --> V - I
Но:
VI --> V > I --> V + I
 
Войти в полноэкранный режимВыйти из полноэкранного режима

Это работает для любого номера:

 CDXLIV
--> (D - C) + (L - X) + (V - I)
= (500 - 100) + (50 - 10) + (5 - 1) = 444
ХС = (100 - 10) = 90
 
Войти в полноэкранный режимВыйти из полноэкранного режима

Однако 99 записывается не как 100 - 1 , а как (100 - 10) + (10 - 1) .

Таким образом, это правила преобразования однозначного числа с основанием 10 N в римские цифры:

  • Если N <= 3, повторить I от 1 до 3 раз
  • Если N === 4, это 5 — 1, поэтому VI
  • Если N === 5, это В
  • Если N < 9, это 5 + повтор I от 1 до 3 раз
  • Если N === 9, это 10 — 1, поэтому
    IX

Если мы посмотрим на приведенную выше таблицу, то заметим, что для каждой степени от 10 до 1000 (1, 10, 100, 1000) есть одиночные (1, 10 и т. д.) и пятерки (5, 50, 500) — поэтому мы можем повторить описанные выше шаги для каждой степени 10 и соответствующим образом изменить набор цифр, которые мы используем.

Кодирование от base10 до Roman

Сначала мы переводим обычные числа с основанием 10 в римские цифры.

Нам нужна простая схема преобразования римских цифр в числа:

 const romanNumerals = {
  1: «Я»,
  5: «В»,
  10: «Х»,
  50: 'Л',
  100: 'С',
  500: 'Д',
  1000: «М»
}
 
Войти в полноэкранный режимВыйти из полноэкранного режима

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

 const romanNumerals = {
  1: «Я»,
  5: «В»,
  10: «Х»,
  50: 'Л',
  100: 'С',
  500: 'Д',
  1000: «М»
}
/**
 * Переводит одну цифру в степени 10 в римскую цифру.
 * @параметр п
 * @параметр powerOf10
 * @returns {*|строка}
 */
const numDigitToRomDigits = (n, powerOf10) => {
  if (n <= 3) { // I, II, III, X, X, XXX, C, CC, CCC
    return romanNumerals[powerOf10].repeat(n)
  }
  if (n === 4) { // IV, XL, CD
    вернуть римские цифры[powerOf10]
      + римские цифры [powerOf10 * 5]
  }
  if (n === 5) { // V, L, D
    вернуть римские цифры [powerOf10 * 5]
  }
  если (n < 9) { // VI, VII, VIII и т. д.
    вернуть римские цифры [powerOf10 * 5]
      + римскиеЧисла[powerOf10].repeat(n - 5)
  }
  // МС, ХС, IX
  вернуть римские цифры[powerOf10]
    + римские цифры [powerOf10 * 10]
}
 
Войти в полноэкранный режимВыйти из полноэкранного режима

Давайте попробуем это:

 numDigitToRomDigits(7, 10) // "70", дает `LXX`
numDigitToRomDigits(5, 100) // "500", возвращает `D`
numDigitToRomDigits(3, 1) // "3", дает `III`
numDigitToRomDigits(4, 10) // "40", дает `XL`
 
Войти в полноэкранный режимВыйти из полноэкранного режима

Выглядит хорошо! Теперь мы можем использовать эту функцию для преобразования больших чисел:

 /**
 * Переводит целое число в римские цифры. 
 * @параметр х
 * @возвращает {строка}
 */
константа num2rom = x => {
  // Разбить число на цифры и наоборот,
  // так вычислить степень числа 10 проще.
  константные цифры = x.toString()
    .расколоть('')
    .map(n => parseInt(n))
    .задний ход()
  // Большие числа не работают, пишется 5000
  // как V с дефисом сверху, у нас этого нет
  // персонаж...
  если (х > 3999) {
    выдать новую ошибку(
      «Числа больше 3999 не могут быть преобразованы»
    )
  }
  // Перебираем все цифры, каждую преобразуем
  пусть romanNum = ''
  for (пусть i = 0; i < digits.length; i++) {
    РоманЧисло =
      numDigitToRomDigits (цифры [i], 10 ** i)
      + romanNum // Прикрепляем к началу уже сконвертированного
  }
  вернуть romanNum
}
 
Войти в полноэкранный режимВыйти из полноэкранного режима

Попробуем так:

 num2rom(3724) // выдает `MMMDCCXXIV` - работает!
 
Войти в полноэкранный режимВыйти из полноэкранного режима

От римских цифр снова к основанию 10

Другой способ будет немного сложнее - нам нужно разобрать римские цифры и снова преобразовать их обратно в основание 10. Во-первых, мы переворачиваем карту ранее. Stackoverflow рассказывает нам, как это сделать.

 const flipObject = obj => Object.entries(obj)
  .reduce((акк, [ключ, значение]) =>
(акк[значение] = ключ, соотв), {}) const base10Numerals = flipObject(romanNumerals) /* дает { С: "100" Д: "500" Я: "1" Л: "50" М: "1000" В: "5" Х: "10" } */
Войти в полноэкранный режимВыйти из полноэкранного режима

Сейчас мы реализуем метод вычитания/сложения. Мы знаем, что добавляются большие числа слева от других чисел. Если число слева меньше, оно вычитается. Итак, в основном: VI = V + I , но IV = V - I . Поскольку не существует такой вещи, как IIV , мы можем проверить следующее число, чтобы определить, добавляем ли мы текущее число или вычитаем его. Итак, примерно так:

 Слева направо,
Если следующее число справа больше:
  Вычесть текущую цифру
Еще
  Добавить текущую цифру
 
Войти в полноэкранный режимВыйти из полноэкранного режима

В коде это будет выглядеть так:

 /**
 * Преобразует римское число в base10.
* @параметр х * @ возвращает {число} */ константа rom2num = х => { // Разделить число и присвоить base10 // значение для каждой цифры. // parseInt необходим, потому что // флип дает строки. константные цифры = x.split('') .map (d => parseInt (base10Numerals [d])) пусть сумма = 0 // Перебираем каждую цифру for (пусть i = 0; i < digits.length; i++) { // Если число справа больше, чем // текущий номер если (цифры [i + 1] > цифры [i]) { сумма -= цифры[i] } еще { сумма += цифры[i] } } возвращаемая сумма }
Войти в полноэкранный режимВыйти из полноэкранного режима

Давайте посмотрим, работает ли это, переведя все числа от 1 до 3999 туда и обратно:

 let result = true
для (пусть я = 0; я < 3999; я ++) {
  результат = результат && rom2num(num2rom(i)) === i
}
console.log(результат) // верно, работает!
 
Войти в полноэкранный режимВыйти из полноэкранного режима

Результат

Теперь нам нужны поля ввода и кнопки, и вуаля:

Уф, хватит пока древних времен, вернемся в 21 век.


Надеюсь, вам понравилось читать эту статью так же, как мне понравилось ее писать! Если да, то оставьте ❤️ или 🦄 ! Я пишу технические статьи в свободное время и время от времени люблю выпить кофе.

Если вы хотите поддержать мои усилия, вы можете предложить мне кофе или подпишитесь на меня в Твиттере 🐦 ! Вы также можете поддержать меня напрямую через Paypal!

Римские цифры для KS2 — образование

Балджит Догра 22 декабря 2020 г. математика, Номера

Балджит Догра

22 декабря 2020 г. математика, Цифры

Содержание

  • 1 Что такое римские цифры?
  • 2 Формирование чисел – Правила
    • 2. 1 Правило 1
    • 2.2 Правило 2
    • 2.3 Правило 3
    • 2.4 Правило 4
    • 2.5 Правило 5
  • 3 Цель познакомить с римскими цифрами на ключевом этапе 2
  • 4 Римские цифры в наше время
  • 5 Загрузить практические пакеты
  • 6 Дополнительная литература

Что такое римские цифры?

Как следует из названия, римские цифры были созданы и использовались римлянами в качестве системы нумерации для связи и торговли до средних веков. В этой системе алфавиты используются для обозначения чисел и их комбинаций для создания больших чисел. Современное использование использует семь основных символов, и каждый из них соответствует фиксированному значению. Символы I, V, X, L, C, D и M представляют 1, 5, 10, 50, 100, 500 и 1000 соответственно.

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

Составление чисел – правила

Чтобы понять, как работают римские цифры и как мы можем создавать большие числа с помощью этих символов, нам необходимо понять некоторые основные правила.

Правило 1

Римские цифры I, X и C могут повторяться три раза, чтобы образовать числа.

Например:

1.) I = 1, I + I = 2, I + I + I = 3
2.) X = 10, X + X = 20, X + X + X = 30
3 .) C = 100, C + C = 200, C + C + C = 300

Это правило не действует для цифр V, L и D; эти цифры не должны повторяться для образования больших чисел.

Правило 2

Когда меньшая цифра помещается справа от старшей цифры значения, все значения складываются.

Примеры:
1. VI = 5 + 1 = 6
2. XXIII = 10 + 10 + 1 + 1 + 1 = 23
3. LXXXV = 50 + 10 + 10 + 10 + 5 = 85
Применяется это правило к значению подобных цифр, как показано в правиле 1

Правило 3

Когда младшая цифра помещается слева от цифры большего значения, меньшее значение вычитается из цифры большего значения.

Например:
1. IV = 5 – 1 = 4
2. XCIV = 100-10-1+5 = 94
3. CLIX = 100 + 50 + (10 – 1) = 159

Правило 4

Чтобы преобразовать числа больше 10, мы должны сначала записать число 10 или группу из 10, а затем меньшие числа 1 или 5 по мере необходимости.

Например:
1. 13 = 10 + 3 = 1 0 + 1 + 1 + 1 = XIII
2. 37 = 10 + 10 + 10 + 5 + 1 + 1 = XXXVII
3. 59 = 100 + 50 + (10 – 1) = CLIX

Правило 5

Значение цифр увеличивается в 1000 раз, когда над римскими цифрами проводится горизонтальная линия.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *