Module: توالی براکت صحیح (RSP)


Problem

3 /6


تیلدا-امگا-لامبدا-حساب

Theory Click to read/hide

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

Problem

تیلدا-امگا-لامبدا-حساب یک توسعه حتی نوآورانه تر از "دانشمندان بریتانیایی، Inc" در زمینه برنامه نویسی تابعی تفاوت آن با حساب امگا لامبدا فقط در توانایی قرار دادن براکت های مربعی و مجعد است. براکت هایی به شکل فیل نیز برنامه ریزی شده بود، اما شرکت نتوانست استاندارد یونیکد را تغییر دهد. 
ورودی یک عبارت tilde-omega-lambda است که بیش از 10^7 کاراکتر ندارد. شما باید نتیجه کاهش tilde-izzy آن را چاپ کنید، که به همان روش کاهش izzy برای عبارات امگا-لامبدا عمل می کند، اما با براکت های مربع و مجعد.

به یاد بیاورید که  izzy-reduction یکی از عملیات روی چنین عباراتی است. هنگامی که اجرا می شود، بررسی می شود که آیا دنباله براکت در عبارت صحیح است یا خیر. شرایط نادیده گرفته می شود. اگر دنباله درست باشد، تبدیل به عبارت gg می شود، اگر نه، به عبارت wp تبدیل می شود. 
 

 

نمونه‌ها
<سر> <بدن>
# ورودی خروجی
1 اصلی{izzy[lol](ttt)} gg