حل تمرین رشته رمزی کوئرا با پایتون
در این نوشته به روش حل یکی از سوالات برنامه نویسی وبسایت کوئرا میپردازیم.
حل تمرین رشته رمزی کوئرا با پایتون
ممد و احمد به دنبال راهی برای انتقال پیامی بسیار مهم هستند، پیامی که قرار است بین آن دو جابهجا شود به صورت یک رشتهی n حرفی از حروف کوچک انگلیسی است و به علت اهمیت ماجرا تصمیم دارند این رشته را رمزگزاری کنند. روش رمزگزاریای که این دو انتخاب کردند به این صورت است که ابتدا حرف آخر رشته را به اول رشته جابهجا میکنند و سپس تمامی حروف رشته را به حرف بعدی آن در الفبا تبدیل میکنند. (به عنوان مثال حرف c به d تبدیل میشود) همچنین حرف بعدی z در الفبا را a در نظر میگیریم. ممد که میگوید کار از محکم کاری عیب نمیکند، برای قویتر کردن رمزگزاری پیشنهاد کرده که این عملیات k بار بر روی رشته انجام شود. آن دو که آرام و قرار ندارند از شما خواستهاند تا رشتهی نهایی را بدست آورید. توجه کنید در هر مرحله از k بار عملیات، هر دوی «انتقال حرف از آخر به اول» و «تبدیل هر حرف به حرف بعدی» انجام میشود.
ورودی
در خط اول ورودی n آمده که نشان دهندهی طول پیام است. در خط دوم ورودی k آمده که نشان دهندهی تعداد باری است که عملیات رمزگزاری باید صورت گیرد. در خط سوم ورودی رشتهی مورد نظر آمده، تضمین میشود تمام حروف آن از حروف کوچک انگلیسی است.
خروجی
در تنها خط خروجی رشتهی مورد نظر را پس از بار رمزگزاری خروجی دهید.
مثال
ورودی نمونه 1
3 1 abz
خروجی نمونه 1
abc
یک مرحله رمز گزاری به صورت زیر انجام میشود: ابتدا حرف آخر رشته به اول آن میرود در نتیجه abz به zab تبدیل میشود. سپس تمامی حروف رشته با حرف بعدی الفباییشان جابهجا میشوند در نتیجه zab به abc تبدیل میشود.
ورودی نمونه 2
4 5 abcd
خروجی نمونه 2
ifgh
2 عملیات اول روی رشتهی abcd به صورت زیر خواهد بود:
- عملیات اول: ابتدا حرف آخر رشته (حرف d) به اول رشته منتقل میشود و به رشتهی dabc خواهیم رسید. سپس تمامی حروف به حرف بعدی الفبا منتقل میشوند به رشتهی ebcd خواهیم رسید.
- عملیات دوم: ابتدا حرف آخر رشته (حرف d) به اول رشته منتقل میشود و به رشتهی debc خواهیم رسید. سپس تمامی حروف به حرف بعدی الفبا منتقل میشوند به رشتهی efcd خواهیم رسید. 3 عملیات باقیمانده به طور مشابه صورت میگیرند و در انتها به رشتهی ifgh خواهیم رسید.
کد پایتون سوال تمرین رشته رمزی
n = int(input().strip()) k = int(input().strip()) s = input().strip() for _ in range(k): s = s[-1] + s[:-1] s = ''.join(chr((ord(char) - ord('a') + 1) % 26 + ord('a')) for char in s) print(s)
منبع سوال: کوئرا
اگر نیاز به حل تمرینهای دیگری از کوئرا دارید در بخش نظرات همین نوشته برای ما بنویسید.
ارسال پاسخ