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

در طول مسابقه، می‌توانید سؤالات خود را از قسمت «سؤال بپرسید» مطرح کنید.

زیرنویس‌های ناهم‌نام


پس از کنکور سخت و طاقت‌فرسا، مهدی تصمیم گرفته سریال جدیدی را شروع کند.

برای این منظور، چند قسمت از آن سریال را دانلود کرده (ویدیوهایی با فرمت mkv) و همچنین از آ‌ن‌جا که زبانش خوب نیست، یک سری زیرنویس (با فرمت srt) هم برای برخی قسمت‌ها دانلود کرده است.

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

جزئیات پروژه🔗

پروژه‌ی اولیه را از این لینک دانلود کنید. ساختار فایل‌های پروژه به‌صورت زیر است:

subtitles
├── go.mod
├── go.sum
├── main.go
├── main_sample_test.go
├── sub.srt
└── video.mkv
Plain text

مهدی می‌خواهد در فایل main.go تابعی با نام Renamify پیاده‌سازی کند که زیرنویس‌ها را هم‌نام با ویدیوها کند. این تابع آدرس یک دایرکتوری را دریافت کرده و باید عملیات تغییر نام را انجام دهد:

func Renamify(path string) {
    // TODO: Implement
}
Go

مثلاً پوشه‌ی ورودی می‌تواند به این شکل باشد:

Serial1.S01E01.mkv
Serial1.sub.S01E01.srt
Plain text

ولی می‌خواهیم زیرنویس‌ها به ویدیوی متناظر خود تغییر نام داده شوند؛ مثلاً پوشه‌ی نهایی چنین محتویاتی داشته باشد:

Serial1.S01E01.mkv
Serial1.S01E01.srt
Plain text

مثال🔗

نمونه پوشه‌ی ورودی🔗

serial1.S1E1.mkv
serial1.S1E2.mkv
serial1.S1E3.mkv
subof.series1.S01E01.srt
subof.series1.S01E02.srt
subof.series1.S01E03.srt
Plain text

نمونه پوشه‌ی خروجی🔗

serial1.S1E1.mkv
serial1.S1E2.mkv
serial1.S1E3.mkv
serial1.S1E1.srt
serial1.S1E2.srt
serial1.S1E3.srt
Plain text

نکات🔗

  • دقیقاً یک سریال در پوشه موجود است.
  • از هر قسمت حداکثر یک زیرنویس و حداکثر یک ویدیو داریم.
  • به جز فایل‌های mkv (ویدیوها) و فایل‌های srt (زیرنویس‌ها) هیچ فایل دیگری در پوشه موجود نیست.
  • نام همه‌ی فایل‌ها، اطلاعات شماره قسمت و فصل مربوطه را به فرم S01E01‍ در خود دارد.
  • در این سؤال مجاز به استفاده از کتاب‌خانه‌های شخص ثالث نیستید.
  • شما تنها مجاز به اعمال تغییرات در فایل main.go هستید.

آن‌چه باید آپلود کنید🔗

پس از پیاده‌سازی تابع Renamify، فایل main.go را آپلود کنید.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.