برای آشنایی با قالب صورت سوال در Quera اینجا را مشاهده کنید و برای آشنایی با نحوهی کار با ورودی و خروجی استاندارد (stdin و stdout) در زبانهای مختلف، اینجا را ببینید.
در مورد سوالات پروژهای میتوانید انتخاب کنید که کدتان را به یکی از زبانهای پایتون یا جاوا بزنید و در سوال مربوطه میتوانید راهحلتان را ارسال کنید.
شما به تماشای سریال علاقهی زیادی دارید و علاوه بر این علاقه یک گیک هم هستید! برای همین دوست دارید که سریالهایتان را به شکل خودکار بوسیله تورنت دانلود کنید.
شما در یک موتور جستجوی تورنت نام سریال مورد نظرتان را جستجو کرده و نتایج آن را در تعدادی فایل متنی در فولدری با آدرس مشخصی (مثلا path/to/src
) ذخیره کردهاید. نمونهای از یک فایل نتیجه جستجو:
هر خط در هر فایل نتیجهی جستجو از درایههایی که بوسیله tab جدا شدهاند تشکیل شدهاست. درایه اول نام تورنت (torrent name) و درایه دوم تاریخ اضافه شدن آن (added time) و درایه سوم حجم این فایل (size) است که با فرمت MB و GB مشخص شدهاست. درایه چهارم تعداد مشارکتکنندگان کامل (seeds) و درایه آخر تعداد مشارکتکنندگان نیمه (leechs) است. (برای اطلاعات بیشتر: یک فایل در تورنت توسط اشخاص به شکل peer-to-peer برای دانلود ارائه میشود، seeds تعداد مشارکتکنندگان آنلاین فعلی است که فایل را به طور کامل دانلود کردهاند و leechs تعداد مشارکتکنندگان آنلاین فعلی است که خود در حال دانلود فایل هستند و تا آنجا که تا اکنون دانلود کردهاند را میتوانند برای بقیه آپلود کنند)
توجه: در متن بالا کاراکتر tab به درستی نمایش داده نشدهاست، برای مشاهده نمونه درست اینجا را ببینید.
شما باید اسکریپتی بنویسید که فایلهای نتیجه جستجو را از آدرس مشخصی (مثلا path/to/src
) بخواند و نتایج را بر اساس قسمت دستهبندی کند و سپس به ازای هر قسمت در هر فصل در آدرس مشخص (مثلا اگر آدرس فولدر نتیجه path/to/dst
باشد) path/to/dst/x/y
نتایج جستجو برای آن قسمت را مرتب شده بر اساس اولویتهایی که جلوتر گفته خواهد شد بریزد.
یک قسمت با regex روبرو شناخته میشود: [Ss]\d+[Ee]\d+
و دو عدد مچ شده میتوانند با ۰ شروع شوند و همه بیانگر یک قسمت در فصل هستند. مثلا همه S03E2
و S3e002
و s03e2
یک قسمت هستند. نتیجهی یک جستجو برای یک قسمت است اگر و تنها اگر این regex به شکل کلمه در torrent name آن ظاهر شده باشد (تضمین میشود که حداکثر یکبار به عنوان کلمه در آن ظاهر خواهد شد). بنابراین serial s3e03 x264
تطابق دارد و serial S03E03ks x265
تطابق ندارد.
نکته: کلمه دنبالهای متوالی از حروف و ارقام انگلیسی و underline است که آن را نمیتوان از دو طرف ادامه داد.
حال هر نتیجهی جستجو که با regex گفته شده تطابق داشت را اگر در فصل x و قسمت y باشد باید torrent name
ش را در فایل path/to/dst/x/y
اضافه کنید.
در یک فایل path/to/dst/x/y
،
torrent name
های نتیجه باید با اولویت های زیر مرتب شده باشند. یعنی ابتدا اولویت اول، سپس اولویت دوم و سپس اولویت سوم.
شما باید این کار را در اسکریپت Bash
به نام magic.sh
انجام دهید که به شکل زیر فراخوانی میشود.
در فولدر path/to/src
تنها فایلهای متنی قرار دارند، به عنوان نمونه:
و شما باید خروجی را به شکل گفته شده مانند ساختار زیر در فایلها بریزید:
به عنوان نمونه، اگر ورودی مثال نتیجهی جستجوی بالا باشد، در فایل مربوط به قسمت ۲۰ فصل ۳ سریال خروجی به شکل زیر است:
magic.sh
را آپلود کنید.