Numerele romane nu mai sunt o parte esențială a vieții noastre de zi cu zi. Dar le folosim atunci când proiectăm monumente, ceasuri și chiar pentru evenimente sportive.
Ce sunt numerele romane?
Numerele romane provin din Roma antică și au rămas modul comun de scriere a numerelor în toată Europa timp de multe secole. Utilizarea lor a supraviețuit mult timp Imperiului Roman însuși. Au fost înlocuite treptat de sistemul de numerotație hindu-arab pe care îl folosim astăzi – numerele de la zero la nouă.
Cifrele romane sunt reprezentate de combinații de litere din alfabetul latin, care servesc drept cifre în acest sistem. Dar, spre deosebire de baza zecimală, cu simboluri De la 0 la 9, sistemul roman folosește șapte litere latine cu majuscule I, V, X, L, C, D, M.
Inițial, nu exista o denumire cu o singură literă pentru zero. În schimb, au folosit cuvântul latin Nulla, care înseamnă „nici unul”.
Cum funcționează numerele romane?
Reprezentarea hindus-arabă a acestor litere este după cum urmează: I = 1, V = 5, X = 10, L = 50, C = 100, D = 500 și M = 1000.
Alte cifre se formează prin combinarea acestor litere în conformitate cu anumite reguli: Un simbol plasat după altul de valoare egală sau mai mare, își adaugă valoarea.
De exemplu, VI = V + I = 5 + 1 = 6 sau LX = L + X = 50 + 10 = 60. Notațiile VI și LX sunt citite ca „una mai mult de cinci” și „zece mai mult de cincizeci”.
Un simbol plasat inainte de una dintre valorile mai mari îi scade valoarea. De exemplu, IX = X – I = 10 – 1 = 9, și XC = C – X = 100 – 10 = 90.
Notațiile IX și XC se citesc ca „una mai puțin de zece” și „zece mai puțin de o sută”.
Numerele mai mari de 1.000 se formează prin plasarea unei liniuțe peste simbol. Prin urmare V̅ = 5.000, X̅ = 10.000, L̅ = 50.000, C̅ = 100.000, D̅ = 500.000 și M̅ = 1.000.000.
Așa-numita formă „standard” nu permite utilizarea aceluiași simbol de mai mult de trei ori la rând. Dar, ocazional, se pot vedea excepții. De exemplu, IIII pentru numărul 4, VIIII pentru numărul 9 și LXXXX pentru 90.
O diagramă interactivă a numerelor romane și a combinațiilor lor
Plasați cursorul peste fiecare simbol pentru a dezvălui echivalentul său hindus-arab:
Am scris codul pentru această diagramă interactivă cu cifre romane pentru a fi încorporat aici în Routech News.
Având în vedere faptul că caracteristica de încorporare HTML nu este un editor de coduri la scară completă, codul dat nu este structurat și prezentat ca fișiere HTML, CSS și JavaScript separate. Mai degrabă este scris ca un singur fișier HTML cu <style>
și <script>
elemente adăugate pentru stil și funcționalitate.
Aici este depozitul complet de cod pentru diagrama mea interactivă cu cifre romane.
Convertor de cifre romane
Introduceți un număr întreg negativ între 0 și 5.000. Apoi faceți clic pe Conversie pentru a afișa un număr roman echivalent.
Nu există nicio limitare programatică la numărul 5.000 sau mai mult. Algoritmul care guvernează conversia ar funcționa la fel.
Spațiul necesar pentru a afișa echivalenți cu cifre romane de numere mari crește din ce în ce mai mult, fără a avea un avantaj suplimentar de a dezvălui ceva nou.
Codul în sine constă dintr-o parte HTML care descrie conținutul cu stiluri inline pentru ușurința interacțiunii și JavaScript adăugat pentru funcționalitate.
Este un element de intrare de tipul „număr” pentru a limita datele de intrare la valorile numerice și la două butoane. Butonul „Convert” este conectat la funcția care efectuează conversia, iar butonul „Display” afișează echivalentul numărului roman.
De ce ieșire printr-un element buton? Stilul a funcționat bine atunci când este aplicat la ambele butoane împreună. Și având în vedere funcționalitatea limitată a încorporării, mi s-a părut o economie de timp.
Pentru claritate, aceste elemente sunt atribuite variabilelor:
const inputField = document.querySelector('input'); // input element
const convertButton = document.getElementById('convert'); // convert button
const outputField = document.getElementById('display'); // output element
Funcţie convertToRoman()
conține logica și redă rezultatul:
function convertToRoman() {
let arabic = document.getElementById('arabicNumeral').value; // input value
let roman = ''; // variable that will hold the result
}
Valoarea numerică din elementul de intrare este salvată într-o variabilă numită „arabic“pentru testare ulterioară. Variabila numită”român“va ține șirul care reprezintă echivalentul roman al intrării arabe.
Apoi, există două matrice de lungimi egale, una care conține cifre arabe și una care deține omologii lor romani. Ambele sunt în ordine descrescătoare pentru a simplifica scăderea:
// descending order simplifies subtraction while looping
const arabicArray = [5000, 4000, 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
const romanArray = ['V̅', 'MV̅','M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']
Tabelele Unicode ajută la formarea simbolurilor mai mari de 1.000.
În cele din urmă, iată logica care testează numărul introdus și îl convertește.
if (/^(0|[1-9]d*)$/.test(arabic)) {
// Regular expression tests
if (arabic == 0) {
// for decimal points and negative
outputField.innerHTML = "Nulla"; // signs
} else if (arabic != 0) {
for (let i = 0; i < arabicArray.length; i++) {
while (arabicArray[i] <= arabic) {
roman += romanArray[i];
arabic -= arabicArray[i];
}
}
outputField.innerHTML = roman;
}
} else {
outputField.innerHTML =
"Please enter non negative integers only. No decimal points.";
}
Primul test verifică punctele zecimale și semnele negative. Dacă este găsit, mesajul solicită „introduceți numai numere întregi care nu sunt negative”.
Următorul test verifică dacă numărul introdus este egal cu zero. Într-un astfel de caz, se afișează șirul „Nulla”.
În caz contrar, buclele continuă să concateneze șiruri romane în timp ce scad numere arabe până când acestea din urmă îndeplinesc condiția pentru bucla while. Apoi afișează echivalentul roman al intrării utilizatorului.
La fel ca în cazul diagramei interactive, codul pentru Convertorul de cifre romane este setat pentru ca dvs. să îl copiați și să îl încorporați în orice articol. Iată depozitul complet de cod.