Skip to content

Latest commit

 

History

History
93 lines (68 loc) · 3.95 KB

interpreter.md

File metadata and controls

93 lines (68 loc) · 3.95 KB
  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

آیدا که فکر می‌کند یک دانشجوی بسیار باهوش است زبانی ساده و محدود طراحی کرده است که با آن می‌توان هر لیستی به سایز حداکثر ۱۰ از اعداد ۰ تا ۹ را ساخت. این زبان از گزارش یک رشته به‌عنوان دستور ساخت یک لیست استفاده می‌کند که رشته مذکور شامل تعدادی دستور و عدد بعد از دستور است.

در این زبان هر دستوری خوانده شود، پس از آن در صورت نیاز داشتن دستور به عدد، حتماً یک عدد می‌آید. هر [ حتماً با یک ] بسته خواهد شد و بین هر براکت، یک عدد یا براکتی دیگر یا حرفی که عدد تفسیر شود می‌آید.

زبانی که ساخته است چنین معنا می‌شود:

خارج از براکت
R : اضافه کردن عدد به سمت راست لیست
L : اضافه کردن عدد به سمت چپ لیست
D : حذف کردن عدد آن خانه (شماره خانه‌ها از ۰ شماره‌گذاری می‌شوند؛ اگر آن خانه وجود نداشت چیزی حذف نمی‌شود.)
r : معکوس کردن ترتیب لیست
[n] : عدد خانه‌ی $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