• محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

می‌خواهیم یک بازی کیک‌پزی بسازیم که در آن یک کیک ساده با اندازۀ مشخص به بازیکن داده می‌شود و او باید با انجام دستورالعمل برنامه‌ریزی شده، کیک نهایی را تحویل دهد.

دستورات

پختن کیک با اندازۀ داده‌شده

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
ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.