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