- محدودیت زمان: ۱ ثانیه
- محدودیت حافظه: ۲۵۶ مگابایت
میخواهیم یک بازی کیکپزی بسازیم که در آن یک کیک ساده با اندازۀ مشخص به بازیکن داده میشود و او باید با انجام دستورالعمل برنامهریزی شده، کیک نهایی را تحویل دهد.
دستورات
پختن کیک با اندازۀ دادهشده
BAKE height width
کیک اولیه را که مستطیلی با ارتفاع height
و طول width
از $o$هاست، با توجه به دستورالعمل میپزد و آن را چاپ میکند.
$$ 1 \leq height < 100 $$ $$ 1 \leq width < 100 $$
مثال
با اجرای دستور زیر:
BAKE 3 5
کیک اولیه، به این شکل خواهد شد:
ooooo
ooooo
ooooo
فرمانهای افزودن عملیات به دستورالعمل
در ابتدای برنامه دستورالعمل خالی است. در نتیجه با اجرای فرمان پختن کیک، همان کیک اولیه خروجی داده میشود. با اجرای فرمانهای زیر میتوانیم به دستورالعمل، عملیات اضافه کنیم. حال اگر فرمان پخت کیک صادر شد، عملیاتهای افزوده شده به ترتیب روی کیک اولیه اجرا میشوند.
۱. افزودن خامه
ADD OPERATION => ADD CREAM
به بالا و طرفین آخرین طبقه کیک خامه (C
) اضافه و عبارت Done
را در خروجی چاپ میکند.
مثال
اگر کیک به این شکل باشد:
ooo
ooo
پس از انجام عملیات، به این شکل خواهد شد:
CCCCC
CoooC
CoooC
۲. افزودن طعم
ADD OPERATION => ADD flavor TO where
قسمتهایِ موردِ نظرِ آخرینِ طبقۀ کیک را به طعم مشخصشده آغشته و عبارت Done
را در خروجی چاپ میکند.
flavor
میتواند شکلات (K
)، توت فرنگی (S
) یا موز (B
) باشد.
where
میتواند بالا (TOP
) یا طرفین (SIDES
) باشد.
مثال
اگر کیک به این شکل باشد:
oooo
oooo
oooo
با اجرای دستور زیر:
ADD S TO TOP
به این شکل خواهد شد:
SSSS
oooo
oooo
۳. افزودن طبقه
ADD OPERATION => ADD LAYER
یک طبقه را با ابعاد کیک اولیه، بر روی کیک فعلی قرار میدهد و عبارت Done
را در خروجی چاپ میکند.
مثال
اگر کیک اولیه ارتفاع ۲ و طول ۴ داشته و کیک فعلی به شکل زیر باشد:
CCCCCC
CBBBBC
CooooC
به این شکل خواهد شد:
oooo
oooo
CCCCCC
CBBBBC
CooooC
پایان برنامه
END
با اجرای این دستور، برنامه پایان مییابد.
نکات
- در نظر داشته باشید که دستورها همواره روی آخرین طبقه کیک اعمال میشوند. برای مثال اگر بخواهیم یک لایه خامه اضافه کنیم، تنها روی آخرین طبقه آن را انجام میدهیم.
- کیک همواره متقارن است. بنابراین امکان یکسان نبودن طول طبقهها را در نظر داشته باشید و فضای خالی را با space پر کنید. همچنین این امکان وجود دارد که طبقات بالایی طول بیشتری داشته باشند.
مثال
اگر کیک اولیه ارتفاع ۲ و طول ۳ داشته و کیک فعلی به شکل زیر باشد:
KKK
ooo
با اجرای ادامه دستوالعمل به شکل زیر ممکن است بشود:
CCCCC
CoooC
CoooC
KKK
ooo
ورودی
در هر خط ورودی، یکی از دستوراتی که در بالا توضیح داده شد، میآید. برنامه با دستور END
خاتمه مییابد.
خروجی
با توجه به توضیحات بالا، به ازای هر دستور، خروجی مورد نظر را چاپ کنید.
مثال
ورودی نمونه ۱
BAKE 1 1
ADD OPERATION => ADD CREAM
BAKE 2 3
ADD OPERATION => ADD K TO SIDES
BAKE 2 3
ADD OPERATION => ADD LAYER
BAKE 1 3
ADD OPERATION => ADD S TO SIDES
BAKE 1 3
ADD OPERATION => ADD B TO TOP
BAKE 1 3
END
خروجی نمونه ۱
o
Done
CCCCC
CoooC
CoooC
Done
KCCCK
KoooK
KoooK
Done
ooo
KCCCK
KoooK
Done
SoS
KCCCK
KoooK
Done
BBB
KCCCK
KoooK
ارسال پاسخ برای این سؤال