سوالات هفته چهارم، دومین دوره لیگ مای‌کد به همراه پاسخ

سوالات هفته چهارم، دومین دوره لیگ مای‌کد به همراه پاسخ

سوالات چالشی هفته چهارم دومین دوره لیگ مای‌کد به همراه پاسخ‌های مورد انتظار تست کیس‌ها جهت آشنایی بیشتر شرکت‌کنندگان در لیگ منتشر می‌گردد.

پاسخ‌های تیم برنده جهت افزایش جنبه آموزشی  و استفاده سایر شرکت‌کنندگان پس از آزمون کامنت گذاری شده است.

دریافت
عنوان: محاسبه شاخص z-score ساده شده
حجم: 252 کیلوبایت

پاسخ تیم برنده


دریافت
عنوان: سوال چالشی دیده‌بان
حجم: 368 کیلوبایت
توضیحات: فاصله اقلیدسی

پاسخ تیم برنده 


دریافت
عنوان: سوال چالشی قضیه Zeckendorf
حجم: 195 کیلوبایت

پاسخ تیم برنده


تابع اصلی مرتبط با سوال اول

 
# خواندن فایل ورودی
with open("input.txt", "r") as f:
    lines = f.read().splitlines()

out_file = open("output.txt", "w")
output = []

for line in lines:
    if not line.strip():  # خط خالی را نادیده بگیر
        continue

    # تبدیل اعداد به لیست
    numbers = [int(x) for x in line.split()]

    # محاسبه میانگین
    mean_value = sum(numbers) / len(numbers)

    # پیدا کردن اندیس‌های داده‌های غیرعادی
    abnormal_indices = []

    for i, x in enumerate(numbers):
        # محاسبه فاصله از میانگین
        if x >= mean_value:
            distance = x - mean_value
        else:
            distance = mean_value - x

        # محاسبه شاخص فاصله از میانگین
        if mean_value != 0:
            index_value = distance / mean_value
        else:
            index_value = 0

        # بررسی غیرعادی بودن
        if index_value > 1:
            abnormal_indices.append(i)

    # ایجاد خروجی
    if not abnormal_indices:
        output.append("NORMAL")
    else:
        output.append(" ".join(str(idx) for idx in abnormal_indices))

# نوشتن در فایل خروجی
for i in range(len(output)):
    if i != len(output) - 1:
        out_file.write(output[i] + "\n")
    else:
        out_file.write(output[i])

out_file.close()


تابع اصلی مرتبط با سوال دوم

# خواندن فایل
with open("input.txt", "r") as f:
    lines = f.read().splitlines()

out_file = open("output.txt", "a")
output = []

for i in lines:
    # تبدیل ورودی به عدد صحیح و اعشاری
    x1,y1,x2,y2,x3,y3 = i.split(" ")
    x1,y1,x2,y2,x3,y3 = float(x1),float(y1),float(x2),float(y2),float(x3),float(y3)
    if int(x1) == x1:x1 = int(x1)
    if int(y1) == y1:y1 = int(y1)
    if int(x2) == x2:x2 = int(x2)
    if int(y2) == y2:y2 = int(y2)
    if int(x3) == x3:x3 = int(x3)
    if int(y3) == y3:y3 = int(y3)

    # محاسبه فاصله
    d1 = (x2-x1)2 + (y2-y1)2
    d2 = (x3-x1)2 + (y3-y1)2

    if d1 < d2:
        output.append(f"{x2}{y2}")
    elif d2 < d1:
        output.append(f"{x3}{y3}")
    else: output.append(f"{x2}{y2}{x3}{y3}")

# نوشتن خروجی
for i in range(len(output)):
    if i != len(output) - 1:
        output[i] += "\n"
    out_file.write(output[i])

out_file.close()

تابع اصلی مرتبط با سوال سوم

 

# خواندن فایل ورودی
with open("input.txt", "r") as f:
    lines = f.read().splitlines()

out_file = open("output.txt", "w")
output = []

for line in lines:
    # عدد مخفی را بخوان
    secret_number = int(line.strip())

    # تولید دنباله فیبوناچی تا بزرگتر از عدد مخفی
    fibonacci = [1, 1]
    while fibonacci[-1] <= secret_number:
        fibonacci.append(fibonacci[-1] + fibonacci[-2])

    # حذف اولین 1 تکراری و مرتب‌سازی نزولی
    fibonacci = list(set(fibonacci))  # حذف تکراری‌ها
    fibonacci.sort(reverse=True)

    # انتخاب اعداد متمایز و غیرمجاور
    selected_numbers = []
    remaining = secret_number
    prev_index = -2  # برای اطمینان از غیرمجاور بودن

    for i, num in enumerate(fibonacci):
        if num <= remaining:
            # بررسی غیرمجاور بودن با آخرین عدد انتخاب شده
            current_index = fibonacci.index(num)
            if not selected_numbers or abs(current_index - prev_index) > 1:
                selected_numbers.append(num)
                remaining -= num
                prev_index = current_index

    # مرتب‌سازی نزولی
    selected_numbers.sort(reverse=True)

    # ایجاد خروجی
    output.append(" ".join(str(num) for num in selected_numbers))

# نوشتن در فایل خروجی
for i in range(len(output)):
    if i != len(output) - 1:
        out_file.write(output[i] + "\n")
    else:
        out_file.write(output[i])

out_file.close()

۰ ۰ ۰ دیدگاه

دیدگاه‌ها

هیچ نظری هنوز ثبت نشده است.
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی

لیگ دانش‌آموزی - مای‌کُد

این لیگ در طول سالی تحصیلی و از آذر‌ماه تا فروردین‌ماه سال بعد به صورت ترکیبی برخط/حضوری برگزار خواهد شد.

دسته‌بندی
آخرین مطلب
پیوندها
بایگانی