برای آشنایی با قالب صورت سوال در Quera اینجا را مشاهده کنید و برای آشنایی با نحوهی داوری پایتون و جنگو، اینجا را ببینید. برای کسب اطلاعات بیشتر درباره نحوه برگزاری مسابقه و پخش جوایز هم اینجا را ببینید.
دو سوال اول مسابقه مربوط به پایتون و دو سوال بعدی مسابقه مربوط به جنگو هستند. سوال آخر هم تاثیری در رتبهبندی و پخش جوایز ندارد اما حل آن برای حضور در مصاحبه حضوری شرکت تومن توصیه میشود.
فرض کنید که در یک فایل پایتون چند کلاس وجود دارد و به مجموعه کل آن کلاسها میگوییم. گراف جهت دار را از روی مجموعه به این شکل میسازیم که راس به راس یال دارد اگر و فقط اگر کلاس از کلاس به صورت مستقیم ارث برده باشد. برای مثال به کد زیر دقت کنید:
گراف کلاسهای بالا:
در این مثال و از ارث بردهاست و کلاس هم از کلاس و ارث برده است.
حال کد زیر را در نظر بگیرید
کلاس C
و B
تابع f
را از کلاس A
به ارث بردهاند و کلاس D
این تابع را از این دو کلاس به ارث بردهاست. پس دو مسیر D-B-A
و D-C-A
برای صدا شدن تابع f
قابل تصور است که در این سوال (مانند قانون خود مفسر پایتون) در ارثبری کلاسی که زودتر (چپتر در پرانتز جلوی تعریف کلاس) نوشته شده را مقدم در نظر میگیریم. یعنی مسیر D-C-A
را برای d.f
در نظر میگیریم.
در کد زیر برای مثال:
در اینجا تابع g
هم در کلاس B
و هم در کلاس C
وجود دارد ولی طبق مفسر پایتون، مسیر مورد نظر در این سوال مسیر D-C
برای d.g
است.
حال لیست کلاسها در اختیار شما قرار میگیرد و شما باید با ایجاد تغییراتی در کلاسها شرایطی را ایجاد کنید که با صدا کردن هر تابع. مسیر صدا شدن آن تابع در شی کلاس Record
که به شما ورودی داده میشود ذخیره شود.
این کار در قالب یک تابع به نام rearrange(ls, rec)
باید صورت بگیرد که ls
لیست کلاسهاست و rec
آن شی مورد نظر از کلاس Record
هست که باید مسیرها در آن ذخیره شود.
rec
خالی شود.object
ارث نبرد.برای درک بهتر به کد زیر و خروجی آن دقت کنید.
خروجی کد بالا:
Record
:🔗کد این کلاس در این لینک قرار دارد. (لازم نیست این فایل را همراه راهحل ارسال کنید)
این کلاس در کنار فایل ارسالی شما قرار میگیرد و شما میتوانید آن را import
کنید. این کلاس دارای سه تابع زیر است.
add_node(node)
: این تابع یک عضو گرفته (که در این سوال باید یک کلاس باشد) و آن را به لیست مسیر اضافه میکند.get_path_list()
: این تابع لیست مسیر را خروجی میدهد.refresh()
: این تابع مسیر ذخیره شده را خالی میکند.تابع rearrange(ls, record)
را در فایل solution.py
پیاده سازی کنید و فایل solution.py
را زیپ کرده و ارسال کنید.
این سوال دارای ۴ تست است که ۲ تست آن یک مسیر ساده، یک تست گرافی مانند گراف مثال زده شده و تست دیگر یک گراف پیچیده میباشد. اگر برای مثال فقط برای مسیرها حل کردید جواب خود را ارسال کنید، بخشی از نمره به شما تعلق میگیرد.