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

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

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

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

دریافت
عنوان: پر کردن داده‌های پرت با میانگین
حجم: 171 کیلوبایت

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


دریافت
عنوان: اختصارنویسی با حذف حروف صدا دار
حجم: 149 کیلوبایت

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


دریافت
عنوان: رمزنگاری با توجه به مکان در الفبا
حجم: 209 کیلوبایت

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


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

 
# Coded By BitFire Team - All Rights Reserved

# تابع پردازش اصلی - این تابع روی هر خط ورودی اجرا می شود
def solve(data: str):
    # ذخیره ورودی برای پردازش نهایی
    tmp_data = data
    
    # حذف علامت (؟) برای محاسبه ی میانگین اعداد 
    data = data.replace("?","")
    data = data.strip()

    # حذف فاصله های اضافه در رشته (برای مثال اگر دو فاصله کنار هم قرار داشته باشند آنها را به یک فاصله تبدیل می کند)
    cleaner = ""
    prev_char = ""
    for char in data:
        if prev_char == " " and char == " ":
            pass
        else:
            cleaner += char
            prev_char = char
    data = cleaner

    # جدا کردن اعداد (به صورت رشته) از یکدیگر
    values = data.split(" ")

    # تبدیل نوع اعداد داخل لیست از رشته به عدد صحیح
    values = list(map(lambda x: int(x),values))

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

    # تبدیل میانگین به رشته و محدود کردن به دو رقم اعشار
    avg = "{:.2f}".format(avg)

    # جایگذاری میانگین محاسبه شده به جای علامت های (؟) در رشته ورودی اولیه
    tmp_data = tmp_data.replace("?",str(avg))

    return tmp_data

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

# Coded By BitFire Team - All Rights Reserved

# تابع پردازش اصلی - این تابع روی هر خط ورودی اجرا می شود
def solve(data: str):
    word = data.strip()

    # مجموعه ی اعداد صدادار
    vowels = "aeiouAEIOU"

    if len(word) <= 3:
        # برگرداندن کلمه به عنوان خروجی در صورتی که طول رشته از 3 کمتر باشد
        return word
    else:
        # حذف حروف صدادار از کلمه
        result = ""
        for ch in word:
            if ch not in vowels:
                result += ch
    
        # خلاصه سازی به حداکثر سه حرف و تبدیل به حروف کوچک
        return result[:3].lower()

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

 
# Coded By BitFire Team - All Rights Reserved
import string

# تابع پردازش اصلی - این تابع روی هر خط ورودی اجرا می شود
def solve(data: str):
    # تهیه دیکشنری، جهت تبدیل حرف به عدد متناظر آن در جدول حروف الفبا انگلیسی
    # مثال خروجی: {"a":1,"b":2,...,"z":26}
    letters = {}
    count = 1
    for letter in string.ascii_lowercase:
        letters[letter] = count
        count += 1

    # تهیه دیکشنری، جهت تبدیل عدد به حرف متناظر آن در جدول حروف الفبا انگلیسی
    # مثال خروجی: {1:"a",2:"b",...,26:"z"}
    letters_reversed = {}
    count = 1
    for letter in string.ascii_lowercase:
        letters_reversed[count] = letter
        count += 1

    # لیست اعداد حروف هر دسته
    root_letters = [1,4,9,16,25]                        # حروف ریشه دار
    incompleted_letters = [3,5,7,11,13,15,17,19,21,23]  # حروف ناتمام
    heavy_letters = [2,6,8,10,12,14,18,20,22,24,26]     # حروف سنگین
 
    text = data

    # بخش بندی خروجی نهایی به سه قسمت
    result_root = []         # بخش حروف ریشه دار
    result_incompleted = []  # بخش حروف ناتمام
    result_heavy = []        # بخش حروف سنگین

    text = text.lower()  # کوچک سازی حروف برای پردازش

    # دسته بندی حروف ورودی به سه دسته و قرار دادن عدد آن در دسته خروجی مربوطه
    for char in text:
        if letters[char] in root_letters:
            result_root.append(letters[char])
        elif letters[char] in incompleted_letters:
            result_incompleted.append(letters[char])
        elif letters[char] in heavy_letters:
            result_heavy.append(letters[char])

    # مرتب سازی اعداد حروف موجود در رشته ورودی در هر دسته، بر اساس معیار های مرتب سازی سوال
    result_root = sorted(result_root)                 # اعداد ریشه دار: از کوچک به بزرگ
    result_incompleted = sorted(result_incompleted)   # اعداد ناتمام: از کوچک به بزرگ
    result_heavy = sorted(result_heavy,reverse=True)  # اعداد سنگین: از بزرگ به کوچک
    
    # ایجاد خروجی با قرار دادن دسته ها در کنار یکدیگر به ترتیب
    output = ""
    for item in result_root:
        output += letters_reversed[item]
    for item in result_incompleted:
        output += letters_reversed[item]
    for item in result_heavy:
        output += letters_reversed[item]

    return output.upper()  # بازگرداندن خروجی به صورت حروف بزرگ

دریافت
عنوان: سورس کد تیم برنده هفته اول دومین دوره لیگ مای‌کد
حجم: 3.99 کیلوبایت
توضیحات: تیم بیت فایر

۰ ۰ ۲ دیدگاه

دیدگاه‌ها (۲)

آیا نوشتن تابع برای کد واجبه؟

ایا این امکان هست که برنامه رو بدون تابع بنویسیم؟ یا حتما باید از تابع استفاده بکنیم؟

پاسخ:

۱۰ بهمن ۰۴، ۲۱:۴۷
مهم تولید پاسخ صحیح هست و می تونید بدون تابع هم این کار رو انجام بدید

کوروش ادیبیان

۱۱ بهمن ۰۴ ، ۰۰:۰۲

برای آپلود پاسخ, باید کد رو آپلود کرد یا خروجی رو؟

پاسخ:

۱۳ بهمن ۰۴، ۰۸:۱۰
سلام
باید پاسخ رو آپلود کرد

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

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

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

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