İçeriğe geç
🛠️ToolsShed

Roman Numeral Arithmetic

Roma rakamları ile toplama, çıkarma, çarpma ve bölmeyi gerçekleştirin.

= 14

= 9

RomanNumeralArithmetic.reference

I

1

V

5

X

10

L

50

C

100

D

500

M

1000

RomanNumeralArithmetic.rules

  • RomanNumeralArithmetic.rule1
  • RomanNumeralArithmetic.rule2
  • RomanNumeralArithmetic.rule3

Bu araç hakkında

Roma rakamları eski bir sayı sistemi olup, saat kadranlarından film çıkış tarihlerine kadar resmi bağlamlarda hala kullanılmaktadır. Roma rakamlarını okumak basit olsa da, bu sistem sıfıra sahip olmadığı ve konumsal mantığa uymadığı için doğrudan aritmetik işlemler yapmak zahmetlidir. Bu araç, Roma rakamlarını anında toplayarak, çıkartarak, çarparak ve bölerek Roma ve Arap rakamları arasında sorunsuz bir şekilde dönüştürerek bu sorunu ortadan kaldırır.

Aracı kullanmak için, açılır menüden işlemi seçin, iki Roma rakamı girin veya Roma ve Arap girdilerini karıştırın, ardından Hesapla'yı tıklayın. Araç aritmetik işlemi anında gerçekleştirir ve sonucu hem Roma hem de Arap formatında gösterir, bu da çalışmanızı doğrulamayı veya Roma aritmetiğinin modern notasyonla nasıl ilişki kurduğunu anlamayı kolaylaştırır. Bu, tarih okuyan öğrenciler, çapraz sözlük meraklıları veya cebir icat edilmeden önce Romalıların hesaplamaları nasıl yaptığına meraklı olan herkes için mükemmeldir.

Sıkça Sorulan Sorular

Kod Uygulaması

ROMAN_VALUES = [
    (1000,'M'),(900,'CM'),(500,'D'),(400,'CD'),(100,'C'),(90,'XC'),
    (50,'L'),(40,'XL'),(10,'X'),(9,'IX'),(5,'V'),(4,'IV'),(1,'I')
]

def to_int(roman: str) -> int:
    """Convert Roman numeral string to integer."""
    values = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
    result, prev = 0, 0
    for ch in reversed(roman.upper()):
        val = values[ch]
        if val < prev:
            result -= val
        else:
            result += val
        prev = val
    return result

def to_roman(n: int) -> str:
    """Convert integer (1-3999) to Roman numeral string."""
    if not 1 <= n <= 3999:
        raise ValueError("Number must be between 1 and 3999")
    result = ""
    for value, numeral in ROMAN_VALUES:
        while n >= value:
            result += numeral
            n -= value
    return result

# Arithmetic operations
def roman_add(a: str, b: str) -> str:
    return to_roman(to_int(a) + to_int(b))

def roman_sub(a: str, b: str) -> str:
    return to_roman(to_int(a) - to_int(b))

def roman_mul(a: str, b: str) -> str:
    return to_roman(to_int(a) * to_int(b))

def roman_div(a: str, b: str) -> str:
    r = to_int(a) // to_int(b)
    return to_roman(r)

# Examples
print(f"XIV + IX = {roman_add('XIV', 'IX')}")    # 14+9=23 = XXIII
print(f"L - XIII = {roman_sub('L', 'XIII')}")    # 50-13=37 = XXXVII
print(f"V × IV = {roman_mul('V', 'IV')}")         # 5×4=20 = XX
print(f"XX ÷ IV = {roman_div('XX', 'IV')}")       # 20÷4=5 = V

# Convert between formats
for n in [1, 4, 9, 14, 40, 90, 399, 1994, 2024]:
    print(f"{n} = {to_roman(n)}")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.