سوالات چالشی هفته پنجم لیگ مایکد به همراه پاسخهای مورد انتظار تست کیسها جهت آشنایی بیشتر شرکتکنندگان در لیگ منتشر میگردد.
دریافت
عنوان: ضرب روسی
حجم: 304 کیلوبایت
توضیحات: سوال چالشی ضرب روسی با پیروری از دستورالعمل
پاسخ تیم برنده
دریافت
عنوان: سوال بارکد بهبود یافته
حجم: 207 کیلوبایت
توضیحات: سوال چالشی بارکد بهبود یافته با بیت اضافی
دریافت
عنوان: سوال رمزگشایی نقشه گنج
حجم: 198 کیلوبایت
توضیحات: سوال چالشی رمز گشایی با کلید خاص
def ancient_multiplication(data): #ارور هندلینگ و مطمعن شدن از صحیح بودن داده ها try: A, B = map(int, data) except ValueError: return "ERROR" #نصف کردن A تا زمانی که از 1 بزرگ تر است و شمارش تعداد لوپ های انجام شده با استپ result, steps = 0, 0 while A > 0: if A % 2 == 1: result += B A //= 2 B *= 2 steps += 1 #خروجی دادن دادن تعداد لوپ و مقدار ریزالت return f"{result},{steps}"
#تابع رمزگشایی def decode_barcode(barcode): #خالی کردن رشته از فاصله و یا نقطه barcode = barcode.replace(" ", "").replace(".", "") #چک کردن برای مضرب 4 بودن بارکد if len(barcode) % 4 != 0: return "ERROR" #نقشه باینری برای ایدریت کردن digit_map = { "000": "0", "001": "1", "010": "2", "011": "3", "100": "4", "101": "5", "110": "6", "111": "7" } #عدد دیکد شده تعریف شده تا بعدش بهش دیجیت ها اضافه بشه decoded_number = "" #ایدریت کردن در طول بارکد به صورت چهارتا چهارتا و پیدا کردن تعداد 1 و اضافه کردن دیجیت ها for i in range(0, len(barcode), 4): group = barcode[i:i+4] if group.count("1") % 2 != 0: return "ERROR" digit_bits = group[:3] if digit_bits in digit_map: decoded_number += digit_map[digit_bits] else: return "ERROR" #اتمام تابع و خروجی دادن جواب return int(decoded_number)
#تابع اصلی برای دیکریپت کردن def decrypt_message(x): #پیدا کردن شماره عدد در حروف الفبا با اختلاف یونیکد ان نسب به a یا A encrypted_text, key = x[0], x[1].lower() key_shifts = [ord(k) - ord('a') + 1 for k in key] #تعریف کردن پیام رمزگشایی شده برای اضافه کردن حروف در هر ایدریت decrypted_text = [] for i, char in enumerate(encrypted_text): if 'A' <= char <= 'Z': shift = key_shifts[i % len(key)] new_char = chr(((ord(char) - ord('A') - shift) % 26) + ord('A')) elif 'a' <= char <= 'z': shift = key_shifts[i % len(key)] new_char = chr(((ord(char) - ord('a') - shift) % 26) + ord('a')) else: new_char = char decrypted_text.append(new_char) #تبدیل لیست رمزگشایی شده به یک استرینگ return "".join(decrypted_text)
دیدگاهها
هیچ نظری هنوز ثبت نشده است.