از بین تمامی دوستان سلیب تنها سجاد برای شب در خانه مانده و بقیه رفتهاند. بازی قبلی برای دو نفر مناسب نبود به همین دلیل بازی جدیدی ابداء کردند که دو نفری بتوانند آن را اجرا کنند. سلیب بازی را به سمت دنیای IT پیش میبرد و به سجاد ایدهی بازی جدیدش را میگوید.
توضیح بازی
بازی آنها به این صورت است که در ابتدا مسیری از کامپیوتر سلیب به طور تصادفی به نام path
انتخاب میشود. سپس سلیب و سجاد هر یک پسوندی را برای خود انتخاب میکنند (مثلا سلیب mp4
و سجاد jpg
انتخاب میکند).
سپس کسی برندهی بازی است که در مسیر انتخاب شده و تمامی زیر مسیرهای آن بیشترین پسوند را داشته باشد اما متاسفانه سجاد میخواهد تقلب کند.
تقلب او به این صورت است که یک نام انتخاب میکند و پسوند تمامی فایلهایی که نام برابر با نام انتخابی او دارند را به پسوند انتخابی خودش تغییر میدهد.
sajjad.txt
در مثال بالا sajjad
اسم فایل و txt
پسوند فایل میباشد.
مثال بازیای که در آن سجاد تقلب نمیکند
src_folder
├── My-videos
│ └── video.mp4
├── image.jpg
└── video.mp4
اگر سلیب jpg
و سجاد mp4
انتخاب کرده باشد سجاد برنده بازی است.
مثال بازیای که در آن سجاد تقلب میکند
src_folder
├── My-videos
│ ├── video2.mp4
│ └── about.txt
├── about.txt
├── image.jpg
└── video1.mp4
اگر سلیب mp4
و سجاد jpg
را انتخاب کرده باشد، سلیب برنده بازی است؛ اما سجاد با تقلب روی اسم about
میتواند دو فایل را به پسوند انتخابی خودش (یعنی jpg
) تغییر داده و برنده بازی شود.
حال از شما میخواهیم تابعی با نام combet
برای سجاد بنویسید تا با دریافت path
و فرمت های انتخابی سلیب و سجاد بگویید که سجاد میتواند ببرد یا خیر.
این تابع به عنوان ورودی سه متغیر از نوع رشته را میپذیرد، و به عنوان خروجی تابع شما باید نتیجه بازی را بازگرداند.
def combet(SAliB_format, Sajjad_format, path):
pass
توجه کنید که نتیجهی بازی بنا به قوانین زیر متغیر هستند پس قوانین را با دقت بخوانید.
قوانین بازی
۱- اگر سجاد به طور عادی برندهی بازی میشد تابع شما باید مقدار زیر را برگرداند:
Win! Normally!
۲- اگر سجاد به طور عادی برندهی بازی نمیشد، ولی میتوانست با تقلب روی اسمی برنده شود، تابع شما باید مقدار زیر را برگرداند:
Win! you can win if you cheat on '{cheat_name}'!
توجه کنید که '{cheat_name}'
نام کلمهایست که سجاد باید روی آن تقلب کند تا ببرد برای مثال در مثال بازیای که در آن سجاد تقلب میکند
که چند خط بالاتر توضیح داده شده است، باید مقدار زیر را برگردانید:
Win! you can win if you cheat on 'about'!
توجه کنید که اگر سجاد با تقلب روی چندین اسم میتوانست برنده شود، میتوانید هر یک از اسمها را به دلخواه برگردانید.
۳- اگر سجاد هیچ استراتژی بردی نداشت باید مقدار زیر را برگردانید:
Lose! you can't win this game!
نکات
- میتوانید فایل اولیه این سوال را از این لینک دریافت کنید.
- تضمین میشود اسم فولدری شامل
.
نمیباشد. - تضمین میشود اگر در فولدری دو فایل همنام با پسوند متفاوت وجود داشت شما اگر بر روی نام آن فایل تقلب کنید مشکلی ایجاد نمیشود (یعنی مثلا اگر در یک فولدر
SAliB.txt
همراهSAliB.mp4
وجود داشت و شما بر روی نامSAliB
تقلب کنید تعداد فایلها با پسوند انتخابی سجاد دو واحد به ازای این دو فایل اضافه میشود). - شما حق
rename
کردن فایلی را ندارید و تنها باید بگویید که چه کسی بازی را میبرد. - کد شما فقط میتواند از کتابخانههای استاندارد پایتون استفاده کند.
- کد شما نباید شامل کلمههای
shutil
یاimport sh
یا from sh
یاsubprocess
یا os.popen
یا os.system
باشد.
نحوه ارسال
شما باید تابع combet
موجود در فایل source.py
را تکمیل و سپس این فایل را ارسال کنید.
ارسال پاسخ برای این سؤال