Python ծրագիր՝ ամբողջ թիվը հռոմեականի վերածելու համար


Հռոմեական թվերը թվային համակարգ է, որն առաջացել է Հին Հռոմում: Նրանք լայնորեն օգտագործվում էին ողջ Հռոմեական կայսրությունում և շարունակում են օգտագործվել որոշակի համատեքստերում այսօր: Հռոմեական թվերը հիմնված են լատինական այբուբենի տառերի համակցության վրա՝ թվային արժեքները ներկայացնելու համար։

Հռոմեական թվերով օգտագործվող հիմնական նշանները հետևյալն են

I: 1
V: 5
X: 10
L: 50
C: 100
D: 500
M: 1000

Ավելի մեծ թվեր ձևավորելու համար այս նշանները միավորվում են տարբեր ձևերով: Կիրառվում են հետևյալ կանոնները -

  • Նշանները սովորաբար գրվում են ձախից աջ արժեքի նվազման կարգով:

  • Եթե ավելի փոքր արժեքի նշանը հայտնվում է ավելի մեծ արժեքի խորհրդանիշից առաջ, փոքր արժեքը հանվում է: Օրինակ, IV-ը ներկայացնում է 4 (5 - 1), իսկ IX-ը ներկայացնում է 9 (10 - 1):

  • Եթե ավելի փոքր արժեքի նշան է հայտնվում ավելի մեծ արժեքի խորհրդանիշից հետո, ապա ավելացվում է ավելի փոքր արժեք: Օրինակ՝ VI-ը ներկայացնում է 6 (5 + 1), իսկ XI-ը՝ 11 (10 + 1):

  • Խորհրդանիշը կարող է կրկնվել մինչև երեք անգամ անընդմեջ՝ այդ արժեքի ավելացումը ներկայացնելու համար: Օրինակ, III-ը ներկայացնում է 3 (1 + 1 + 1), իսկ XXX-ը ներկայացնում է 30 (10 + 10 + 10):

  • Սիմվոլի վերևում տեղադրված բարը բազմապատկում է դրա արժեքը 1000-ով: Օրինակ, V̄-ը ներկայացնում է 5000:

Ամբողջ թիվը հռոմեական թվի վերածելիս ընդհանուր գործընթացը ներառում է տվյալ թվից փոքր կամ հավասար ամենամեծ նշանի գտնելը և այն հռոմեական թվանշանին ավելացնելը։ Գործընթացը կրկնվում է մնացածի համար, մինչև ամբողջ թիվը փոխարկվի:

Այս հոդվածում մենք կտեսնենք ամբողջ թիվը հռոմեական թվի փոխարկելու տարբեր մոտեցումներ:

Մոտեցում

Ստորև ներկայացված են ամբողջ թիվը հռոմեական թվի վերածելու քայլերը

  • Սահմանեք հռոմեական թվային նշանները և դրանց համապատասխան արժեքները: Այս նշանները ներառում են I, V, X, L, C, D և M, որոնք ներկայացնում են համապատասխանաբար 1, 5, 10, 50, 100, 500 և 1000:

  • Սկսեք դատարկ տողից՝ հռոմեական թվերի ներկայացումը պահելու համար:

  • Կրկնեք նշանների միջով ամենամեծից մինչև ամենափոքր արժեքը:

  • Ստուգեք, արդյոք ընթացիկ խորհրդանիշի արժեքը փոքր է կամ հավասար է տվյալ ամբողջ թվին:

  • Եթե այդպես է, ապա ամբողջ թվից հանեք սիմվոլի արժեքը և կցեք խորհրդանիշը հռոմեական թվային տողին:

  • Կրկնեք վերը նշված քայլը, քանի դեռ ընթացիկ խորհրդանիշի արժեքը փոքր է կամ հավասար է մնացած ամբողջ թվին:

  • Անցեք հաջորդ խորհրդանիշին և կրկնեք 5-րդ և 6-րդ քայլերը, մինչև բոլոր նշանները ստուգվեն:

  • Վերադարձրեք հռոմեական թվերի տողը:

Օգտագործելով Tuples-ի ցուցակը

Այս մոտեցումը օգտագործում է ցուցակ՝ հռոմեական թվային նշանները պահելու համար դրանց համապատասխան արժեքների հետ միասին, որոնք ներկայացված են որպես կրկնակիներ:

Օրինակ

Ահա Python ծրագիր, որը փոխակերպում է ամբողջ թիվը իր համապատասխան հռոմեական թվին:

def integer_to_roman(num):
    symbols = [
        (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')
    ]

    roman = ''
    for value, symbol in symbols:
        while num >= value:
            roman += symbol
            num -= value

    return roman

# Define the input integer
number = 14
print('Input integer number:',number)

roman_numeral = integer_to_roman(number)
print(f"The Roman numeral representation of {number} is: {roman_numeral}")

Արդյունք

Input integer number: 14
The Roman numeral representation of 14 is: XIV

Օգտագործելով բառարան

Այս մոտեցումը օգտագործում է Python բառարանի տվյալների կառուցվածքը՝ հռոմեական թվային նշանները պահելու համար նրանց համապատասխան արժեքներով, որոնք ներկայացված են որպես բանալին-արժեք զույգեր:

Օրինակ

Տեսնենք բառարանի միջոցով ամբողջ թիվն իր համապատասխան հռոմեական թվին փոխարկելու ստորև բերված օրինակը:

def integer_to_roman(num):
    symbols = {
        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'}

    roman = ''
    for value in sorted(symbols.keys(), reverse=True):
        while num >= value:
            roman += symbols[value]
            num -= value

    return roman

# Define the input integer
number = 231
print('Input integer number:',number)

roman_numeral = integer_to_roman(number)
print(f"The Roman numeral representation of {number} is: {roman_numeral}")

Արդյունք

Input integer number: 231
The Roman numeral representation of 231 is: CCXXXI

Օգտագործելով հռոմեական գրադարանը

Python-ում ամբողջ թվերը հռոմեական թվերի փոխարկելու համար կարելի է օգտագործել հռոմեական գրադարանը: դրա համար նախ պետք է գրադարանը տեղադրել՝ օգտագործելով pip հրամանը (pip install roman): Տեղադրվելուց հետո հռոմեական գրադարանից toRoman() ֆունկցիան կարող է օգտագործվել ամբողջ թիվն իր համապատասխան հռոմեական թվին փոխարկելու համար:

Օրինակ

Այս օրինակում մենք կվերափոխենք 123 թիվը իր հռոմեական թվային ներկայացմանը, օգտագործելով toRoman() ֆունկցիան:

# import the roman module
import roman

def integer_to_roman(num):
    return roman.toRoman(number)

# Define the input integer
number = 121
print('Input integer number:',number)

roman_numeral = integer_to_roman(number)
print(f"The Roman numeral representation of {number} is: {roman_numeral}")

Արդյունք

Input integer number: 121
The Roman numeral representation of 121 is: CXXI