- محدودیت زمان: ۱ ثانیه
- محدودیت حافظه: ۲۵۶ مگابایت
در این برنامه از شما خواسته شده است تا یک ماشین متنی کوچک با مجموعهای از قابلیت های ساده را پیادهسازی نمایید. روال کار بدین صورت است که در آغاز کار برنامه یک رشته متنی اولیه (به طول حداکثر ۱۰۰۰) را از ورودی دریافت میکند. در ادامه تا زمانیکه دستور خروج را دریافت کند در هر نوبت کاربر درخواست یک عملیات بر روی رشته متنی میدهد.
عملیاتها به شرح زیر تعریف شدهاند:
عملیات SHIFT-R N
تمام کاراکترهای عبارت را به صورت چرخشی N واحد به سمت راست منتقل میکند.
عملیات SHIFT-L N
تمام کاراکترهای عبارت را به صورت چرخشی N واحد به سمت چپ منتقل میکند.
عملیات EXTEND N
به انتهای رشته موجود N کاراکتر جدید اضافه میکند و به عنوان مقدار پیشفرض کاراکترها، ستاره (*
) قرار میدهد.
عملیات SHRINK N
از انتهای رشته، N کاراکتر حذف میکند. درصورتی که طول رشته کمتر از N بود،رشته حاصل یک رشته خالی خواهد بود.
عملیات REVERSE
رشته را معکوس میکند.
عملیات PUT I C
حرف مکان I
ام رشته را با حروف C
جایگزین میکند.توجه داشته باشید که شماره مکانها از یک آغاز میشود و I
همواره کوچکتر مساوی طول رشته خواهد بود.
عملیات PRINT
رشته فعلی را چاپ میکند و به خط بعد میرود.
عملیات EXIT
اتمام برنامه
ورودی
در سطر اول ورودی رشته اولیه ورودی داده میشود. تضمین میشود طول این رشته حداکثر ۱۰۰۰ کاراکتر باشد.
در سطرهای بعدی، در هر سطر، یکی از عملیاتهای بالا که در متن سوال گفته شده، داده میشود. تضمین میشود که همواره آخرین عملیات EXIT
باشد. همچنین تضمین میشود حداکثر ۱۰۰۰ عملیات ورودی داده میشود.
خروجی
برنامه شما تنها به ازای عملیات چاپ خروجی خواهد داشت و به ازای سایر دستورات صرفاً عملیات موردنظر را برروی رشته متنی انجام میدهد.
مثالها
ورودی نمونه ۱
initial string
PRINT
EXTEND 2
SHIFT-R 3
PRINT
PUT 3 O
REVERSE
SHRINK 2
PRINT
EXIT
خروجی نمونه ۱
initial string
g**initial strin
nirts laitiniO
ورودی نمونه ۲
Test
PRINT
SHRINK 20
PRINT
EXTEND 2
PRINT
EXIT
خروجی نمونه ۲
Test
**
ارسال پاسخ برای این سؤال