Açıklama
Hayali programlama dili (IPL), Polonya Ters Notasyonu kullanır. Aşağıdaki komutlara sahiptir:
- i - giriş numarasını girin ve yığına itin
- o - yığının tahribatsız çıkış tepesi (sayı yığında kalır)
- d - yığının üst kısmını at
- tamsayı numarası - bu numarayı yığına itin
- + - * - yığından iki sayı çıkar, ilgili işlemi gerçekleştir ve sonucu geriye it. IPL'de bölünme yoktur.
IPL sadece tamsayılarla çalışır ve basit hesaplamalar için kullanılır. Bir IPL programı bir satıra yazılır ve boşluklarla ayrılır. Boş dize geçerli bir IPL programıdır.
IPL Programı:
i i + o
İki sayı girer, bunları bir araya getirir ve sonucu çıkarır.
Yığına itilebilecek giriş sayıları ve tam sayıları [-999, 999] aralığındadır, ancak çıktı herhangi olabilir. Diliniz büyük rakamları desteklemiyorsa, sorun değil.
Giriş / çıkış formatı
Dize, liste, belirteçler vb. Anlamak ve okumak / yazmak açık olduğu sürece herhangi bir giriş / çıkış formatını seçebilirsiniz.
Görev
Size bir IPL programı verildi, onu optimize etmeniz gerekiyor (uzunluğu azaltmanız):
i 12 + 3 + o d 2 3 + d
Optimizasyon sonra olacak
i 15 + o
Yığın durumunu korumak zorunda değilsiniz, ancak giriş ve çıkışların miktarı ve sıralaması orijinal ve optimize edilmiş program için eşleşmelidir.
Yani IPL programı:
-40 i * 2 * o i + 3 1 + o i 2 *
Optimizasyon sonra olacak
i -80 * o i 4 o i
veya
-80 i * o i 4 o i
(ilgisiz olsalar bile, tüm girişleri kaydetmeniz gerektiğini unutmayın).
Test durumları için kodlama yapılmamalı, kod herhangi bir IPL programında çalışmalı ve gereksinimleri karşılayan en kısa IPL programını oluşturmalıdır.
puanlama
Varsayılan kod-golf puanlaması.
GÜNCELLEME: @Sanchises önerisine göre puanlamayı saf kod golf puanlamasına değiştirdi.
Test durumları:
Giriş:
(empty string)
Mümkün çıktı:
(empty string)
Giriş:
i 4 * 2 + 3 * 6 - o
Mümkün çıktı:
i 12 * o
Giriş:
1 1 + o
Mümkün çıktı:
2 o
Giriş:
i 2 + 3 + o d 2 3 + d
Mümkün çıktı:
i 5 + o
Giriş:
-40 i * 2 * o i + 3 1 + o i 2 *
Mümkün çıktı:
-80 i * o i 4 o i
Giriş:
i i 1 + i 1 + i 1 + i 1 + d d d d o
Mümkün çıktı:
i i i i i d d d d o
Giriş:
i i i 0 * * * o
Mümkün çıktı:
i i i 0 o
Giriş:
i i i 1 * * * o
Mümkün çıktı:
i i i * * o
Giriş:
i 222 + i 222 - + o
Mümkün çıktı:
i i + o
Giriş:
i 2 + 3 * 2 + 3 * 2 + 3 * i * d i 2 + 3 * i + d i o 2 + 2 - 0 * 1 o
Mümkün çıktı:
i i i i i o 1 o
Giriş:
i 1 + 2 * 1 + o
Mümkün çıktı:
i 2 * 3 + o
Giriş:
1 1 + o i 2 + 3 + o d 2 3 + d 4 i * 2 * o i + 3 1 + o i 2 * i i 1 + i 1 + i 1 + i 1 + d d d d o i i i 0 * * * o i i i 1 * * * o i 2 + i 2 - + o i 2 + 3 * 2 + 3 * 2 + 3 * i * d i 2 + 3 * i + d i o 2 + 2 - 0 * 1 o
Mümkün çıktı:
2 o i 5 + o 8 i * o i 4 o i i i i i i d d d d o i i i 0 o i i i * * * o i i + o i i i i i o 1 o
i i d o
içini o i
(giriş sırada bulunuyor ve çıkış sırada bulunuyor) ya da bunu basitleştirmek gerekmez mi? (giriş ve çıkışların sırası uygun olmalıdır)