سوالات چالشی هفته پنجم لیگ مایکد به همراه پاسخهای مورد انتظار تست کیسها جهت آشنایی بیشتر شرکتکنندگان در لیگ منتشر میگردد.
دریافت
عنوان: ضرب روسی
حجم: 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)
دیدگاهها
هیچ نظری هنوز ثبت نشده است.