.لینک‌های مفید برای شرکت در مسابقه:

می‌توانید سوال‌های خود را در رابطه با سوالات و دیگر بخش‌های پایتون از قسمت "سوال بپرسید" مطرح کنید.

توجه کنید که نسخه پایتون استفاده در سوالات ۳.۷ است.

بازی فولدرهای خسته


از بین تمامی دوستان سلیب تنها سجاد برای شب در خانه مانده و بقیه رفته‌اند.

بازی قبلی برای دو نفر مناسب نبود به همین دلیل بازی جدیدی ابداء کردند که دو نفری بتوانند آن را اجرا کنند.

سلیب بازی را به سمت دنیای ‌IT پیش می‌برد و به سجاد ایده‌ی بازی جدیدش را می‌گوید.

توضیح بازی🔗

بازی آن‌ها به این صورت است که در ابتدا مسیری از کامپیوتر سلیب به طور تصادفی به نام path انتخاب می‌شود. سپس سلیب و سجاد هر یک پسوندی را برای خود انتخاب می‌کنند (مثلا سلیب mp4 و سجاد jpg انتخاب می‌کند).

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

تقلب او به این صورت است که یک نام انتخاب می‌کند و پسوند تمامی فایل‌هایی که نام برابر با نام انتخابی او دارند را به پسوند انتخابی خودش تغییر می‌دهد.

sajjad.txt    
Bash

در مثال بالا ‍sajjad اسم فایل و txt پسوند فایل می‌باشد.

مثال بازی‌ای که در آن سجاد تقلب نمی‌کند
src_folder
├── My-videos
│   └── video.mp4
├── image.jpg
└── video.mp4
Bash

اگر سلیب jpg و سجاد mp4 انتخاب کرده باشد سجاد برنده بازی است.

مثال بازی‌ای که در آن سجاد تقلب می‌کند
src_folder
├── My-videos
│   ├── video2.mp4
│   └── about.txt
├── about.txt
├── image.jpg
└── video1.mp4
Bash

اگر سلیب mp4 و سجاد jpg را انتخاب کرده باشد، سلیب برنده بازی است؛ اما سجاد با تقلب روی اسم about می‌تواند دو فایل را به پسوند انتخابی خودش (یعنی jpg ) تغییر داده و برنده بازی شود.

ما از شما میخواهیم تابعی با نام combet برای سجاد بنویسید تا با دریافت path و فرمت های انتخابی سلیب و سجاد بگویید که سجاد می‌تواند ببرد یا خیر.

توضیح تابع combet

این تابع به عنوان ورودی سه متغیر از نوع رشته را می‌پذیرد، و به عنوان خروجی تابع شما باید نتیجه بازی را باز‌گرداند.

def combet(SAliB_format, Sajjad_format, path):
    pass
Python

توجه کنید که نتیجه‌ی بازی بنا به قوانین زیر متغیر هستند پس قوانین را با دقت بخوانید.

قوانین بازی🔗

۱- اگر سجاد به طور عادی برنده‌ی بازی می‌شد تابع شما باید مقدار زیر را برگرداند:

Win! Normally!
Plain text

۲- اگر سجاد به طور عادی برنده‌‌ی بازی نمی‌شد، ولی می‌توانست با تقلب روی اسمی برنده شود، تابع شما باید مقدار زیر را برگرداند:

Win! you can win if you cheat on '{cheat_name}'!
Plain text

توجه کنید که '{cheat_name}' نام کلمه‌ایست که سجاد باید روی آن تقلب کند تا ببرد برای مثال در مثال بازی‌ای که در آن سجاد تقلب می‌کند‍‍ که چند خط بالاتر توضیح داده شده است، باید مقدار زیر را برگردانید:

Win! you can win if you cheat on 'about'!
Plain text

توجه کنید که اگر سجاد با تقلب روی چندین اسم می‌توانست برنده شود، می‌توانید هر یک از اسم‌ها را به دلخواه برگردانید.

۳- اگر سجاد هیچ استراتژی بردی نداشت باید مقدار زیر را برگردانید:

Lose! you can't win this game!
Plain text
نکات
  • تضمین می‌شود اسم فولدری شامل . نمی‌باشد.
  • تضمین می‌شود اگر در فولدری دو فایل هم‌نام با پسوند متفاوت وجود داشت شما اگر بر روی نام آن فایل تقلب کنید مشکلی ایجاد نمی‌شود (یعنی مثلا اگر در یک فولدر SAliB.txt همراه SAliB.mp4 وجود داشت و شما بر روی نام SAliB تقلب کنید تعداد فایل‌ها با پسوند انتخابی سجاد دو واحد به ازای این دو فایل اضافه می‌شود).
  • شما حق rename کردن فایلی را ندارید و تنها باید بگویید که چه کسی بازی را می‌برد.
  • کد شما فقط می‌تواند از کتابخانه‌های استاندارد پایتون استفاده کند.
  • کد شما نباید شامل کلمه‌های shutil یا import sh یا ‍‍from sh یا subprocess یا ‍‍os.popen یا ‍‍os.system باشد.
  • می‌توانید فایل اولیه‌ی خام را از این لینک دانلود کنید.
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.