StickStack, yalnızca iki talimat içeren çok basit bir yığın tabanlı programlama dilidir:
|
yığının uzunluğunu yığının üzerine iter-
üstteki iki öğeyi yığından çıkar ve farklarını geri iter (second topmost - topmost
)
Dil detayları
- Program başlangıcında yığın boştur.
- Tüm talimatlar soldan sağa sırayla uygulanır.
- Yığında 2'den az sayı varsa,
-
talimat geçersizdir. - Uygulama sonunda yığının tam olarak bir sayı içermesi gerekir .
Herhangi bir tamsayı bir StickStack programı tarafından oluşturulabilir. Örneğin:
|||--||-- generates the number 2 through the following stack states:
[]
[0]
[0, 1]
[0, 1, 2]
[0, -1]
[1]
[1, 1]
[1, 1, 2]
[1, -1]
[2]
StickStack kodunuzu değerlendirmek için bu çevrimiçi (CJam) değerlendiricisini kullanabilirsiniz . (Kod için @ Martin için teşekkürler.)
Görev
Girdi çıktısı olarak bir tamsayı numarası verilmiş bir program veya işlev yazmalı veya verilen sayıyı çıkaran bir StickStack programını temsil eden bir dize döndürmelisiniz.
puanlama
- Birincil puanınız aşağıda verilen test durumları için StickStack programlarının toplam uzunluğu . Düşük puan daha iyidir.
- Gönderiminiz yalnızca programınızı tüm sınav durumlarında çalıştırıp puanınızı saydıysanız geçerlidir.
- İkincil (tiebreaker) puanınız, üretme programınızın veya işlevinizin uzunluğudur.
Giriş testi durumları
(Her numara farklı bir test durumudur.)
-8607 -6615 -6439 -4596 -4195 -1285 -72 12 254 1331 3366 3956 5075 5518 5971 7184 7639 8630 9201 9730
Programınız sadece verilen test durumları için değil (veri tipinizin kullanabileceği) tam sayılar için çalışmalıdır. Test numaralarının çözümleri programınıza kodlanmamalıdır. Kodlama şüphesi varsa, test numaraları değişecektir.