مسابقه حضوری ۳ آذر حذف شده و این مسابقه تعیینکنندهی رتبه و جایزهی شما است. اطلاعات بیشتر را میتوانید در اینجا کسب کنید.
لینکهای مفید برای شرکت در مسابقه:
در طول مسابقه، میتوانید سؤالات خود را از قسمت «سؤال بپرسید» مطرح کنید.
تیم کدکاپ برای تهیه کیبوردهای مرحلهی حضوری کدکاپ به مشکل برخورد کرده است. قضیه از این قرار است که این کیبوردها بسیار بیکیفیت هستند و کلیدهایشان زود خراب میشود. بعد از اینکه یک کلید خراب میشود با فشار دادن آن هیچ اتفاقی نمیافتد.
در واقع هر کلید روی کیبورد یک عمر مشخص دارد و عمر همهی کلیدهای یک کیبورد نیز با هم برابر است. به تعداد بارهای قابل پذیرش قبل از خراب شدن یک کلید روی کیبورد، «عدد کیفیت» میگوییم. برای مثال ممکن است «عدد کیفیت» یک کیبورد برابر ۲ باشد، در این صورت هر یک از کلیدها ۲ بار کار میکند و پس از آن از کار میافتد.
یعنی در این کیبورد به ازای متن ورودی زیر:
متن زیر را دریافت میکنید:
در اینجا چند تا از حروف خراب شدند؛ مثلاً o
خراب شد و دیگر کار نکرد.
حال در این مسئله از شما میخواهیم که با داشتن «عدد کیفیت» یک کیبورد، مشخص کنید اگر کاربر بخواد با آن یک متن اولیه را وارد کنید به جایش چه متنی وارد میشود.
پروژهی اولیه را از این لینک دانلود کنید. ساختار فایلهای پروژه بهصورت زیر است:
در فایل main.go
دو تابع تعریف شدهاند که شما باید آنها را کامل کنید:
این تابع قرار است یک شی از نوع Keyboard را مقداردهی کند و بازگرداند. ورودی این متد همان «عدد کیفیت» کیبورد است. ساختار داخلی Keyboard را نیز میتوانید به دلخواه طراحی و استفاده کنید.
این تابع یک رشته ورودی میگیرد و مانند این است که کاربر آن رشته را تایپ کرده است. در خروجی چیزی که واقعا تایپ میشود را برگردانید.
دقت کنید که ممکن است برای یک کیبورد چندین بار عملیات تایپ انجام شود. همچنین ممکن است در طول تایپ یک کلمه یک کلید خراب شود و در ادامهی کلمه خراب باشد.
برای سادگی فرض کنید ورودی inp فقط از کارکترهای زیر تشکیل شده است:
?!'
پس از پیادهسازی توابع خواسته شده، فایل main.go
را آپلود کنید.