- محدودیت زمان: ۱ ثانیه
- محدودیت حافظه: ۲۵۶ مگابایت
آیدا که فکر میکند یک دانشجوی بسیار باهوش است زبانی ساده و محدود طراحی کرده است که با آن میتوان هر لیستی به سایز حداکثر ۱۰ از اعداد ۰ تا ۹ را ساخت. این زبان از گزارش یک رشته بهعنوان دستور ساخت یک لیست استفاده میکند که رشته مذکور شامل تعدادی دستور و عدد بعد از دستور است.
در این زبان هر دستوری خوانده شود، پس از آن در صورت نیاز داشتن دستور به عدد، حتماً یک عدد میآید. هر [
حتماً با یک ]
بسته خواهد شد و بین هر براکت، یک عدد یا براکتی دیگر یا حرفی که عدد تفسیر شود میآید.
زبانی که ساخته است چنین معنا میشود:
خارج از براکت |
---|
R : اضافه کردن عدد به سمت راست لیست |
L : اضافه کردن عدد به سمت چپ لیست |
D : حذف کردن عدد آن خانه (شماره خانهها از ۰ شمارهگذاری میشوند؛ اگر آن خانه وجود نداشت چیزی حذف نمیشود.) |
r : معکوس کردن ترتیب لیست |
[n] : عدد خانهی 0 تلقی میشود.) |
درون براکت [] |
---|
R : راستترین عدد لیست در آن مرحله ساخت |
L : چپترین عدد لیست در آن مرحله ساخت |
s : سایز لیست در مرحله ساخت منهای یک |
برای مثال در لیست 1 2 3 به سایز ۳ |
---|
[0] عدد خانه اول یعنی 1 است. (شمارهگذاری خانهها از ۰ شروع میشود.) |
[s] همان [2] یا خانه شماره ۲ معادل عدد 3 خوانده میشود. |
[L] همان [1] یا خانه شماره ۱ خوانده میشود. |
[R] همان [3] یا خانه شماره ۳ خوانده میشود. (از آنجا که چنین خانهای در این مثال وجود ندارد 0 تلقی میشود.) |
R1 عدد یک را به سمت راست لیست اضافه میکند: 1 2 3 1 |
R[0] در این لیست معادل همان R1 است. |
[[0]] در این لیست معادل همان [1] یا 2 است. |
اما متاسفانه آیدا آنطور که فکر میکرد باهوش نبود و نتوانست کدی را بنویسد که این زبان را بخواند. شما به او در این زمینه کمک کنید.
رشتهای از این زبان به طول حداکثر ۷۰ داده میشود.
از شما لیست نهایی به عنوان خروجی خواسته میشود. در صورت خالی بودن لیست empty
گزارش شود.
R1L2R3D0L0r
3 1 0
شکلگیری لیست با هر دستور اینطور است:
empty
> 1
> 2 1
> 2 1 3
> 1 3
> 0 1 3
> 3 1 0
L2L1L0R[s]L[R]R[[L]]
2 0 1 2 2 0
شکلگیری لیست با هر دستور اینطور است:
empty
> 2
> 1 2
> 0 1 2
> 0 1 2 2
> 2 0 1 2 2
> 2 0 1 2 2 0
R0R0D0D0
empty
شکلگیری لیست با هر دستور اینطور است:
empty
> 0
> 0 0
> 0
> empty