Python ծրագիր՝ OTP ստեղծելու համար՝ քառակուսելով և միացնելով թվի կենտ թվանշանները


Խնդիրն է ստեղծել մեկանգամյա գաղտնաբառ (OTP)՝ քառակուսի դնելով և միացնելով տրված թվի կենտ թվանշանները:

Մուտքային ելքային սցենարներ

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

Input number = 123456789
Output OTP: 19254981

Թվերի կենտ թվերն են՝ 1, 3, 5, 7, 9։ Այս թվերից յուրաքանչյուրը քառակուսի դնելով մեզ տրվում է 1, 9, 25, 49, 81։ Այս քառակուսի թվանշանները իրար միացնելով՝ ստանում ենք OTP 19254981։

Input: 54321
Output: 2591

Մուտքագրված թվի կենտ թվերն են 5, 3 և 1: Այս թվանշանները քառակուսի դնելով մեզ տրվում է 25, 9 և 1: Այս քառակուսի թվանշանների միացումը մեզ տալիս է OTP 2591:

Մոտեցում

Մենք կարող ենք հետևել ստորև նշված քայլերին OTP ստեղծելու համար՝ քառակուսի դնելով և միացնելով տրված թվի կենտ թվանշանները:

  • Սահմանեք մի ֆունկցիա, որն ընդունում է թիվ որպես մուտքագրում:

  • Նախաձեռնեք դատարկ ցուցակ՝ քառակուսի կենտ թվանշանները պահելու համար:

  • Կրկնել թվի թվանշանների վրա:

  • Յուրաքանչյուր թվի համար ստուգեք, թե արդյոք այն կենտ է, օգտագործելով մոդուլային օպերատորը (նիշ % 2 != 0): Եթե թվանշանը կենտ է, քառակուսիացրեք այն (նիշ ** 2) և պահեք այն:

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

  • Վերադարձեք միացված OTP տողը:

Օրինակ

Ահա մի օրինակ, որը ստեղծում է OTP՝ տրված թվի կենտ թվանշանները քառակուսելով և միացնելով։

def create_otp(number):
    odd_digits = []
    while number > 0:
        digit = number % 10
        if digit % 2 != 0:
            odd_digits.append(str(digit ** 2))
        number //= 10
    otp = "".join(odd_digits[::-1])
    return otp

#  Define the input number
number = 789
print("Input number:", number)
otp = create_otp(number)
print("OTP:", otp)

Արդյունք

Input number: 789
OTP: 4981

Օրինակ

Այս օրինակում մենք կստեղծենք մի ֆունկցիա, որն ընդունում է թիվ որպես մուտքագրում: Ֆունկցիան թիվը վերածում է տողի և կրկնում է յուրաքանչյուր թվանշանի վրա: Եթե թվանշանը կենտ է (այսինքն՝ չի բաժանվում 2-ի), ֆունկցիան քառակուսիացնում է թվանշանը և ավելացնում այն ցուցակին:

Բոլոր թվանշանները մշակելուց հետո ֆունկցիան օգտագործում է գեներատոր արտահայտություն՝ յուրաքանչյուր քառակուսի թվանշանը տողի վերածելու համար: Այս քառակուսի թվերն այնուհետև միացվում են միմյանց՝ օգտագործելով join() ֆունկցիան, որի արդյունքում ձևավորվում է OTP:

def create_otp(number):
    odd_digits = [int(digit) for digit in str(number) if int(digit) % 2 != 0]
    otp = "".join(str(digit**2) for digit in odd_digits)
    return otp

#  Define the input number
number = 12349
print("Input number:", number)
otp = create_otp(number)
print("OTP:", otp)

Արդյունք

Input number: 12349
OTP: 1981