N.Puck,.Page,.Ford,.Ajax,.Act I:.Scene I:.[Enter Puck and Ford]Puck:Listen to thy heart!Ford:You is the difference between a cat and I.Scene V:.[Exeunt][Enter Page and Ajax]Ajax:You is the difference between a cat and Ford.Scene X:.Page:You is the product of Puck and I.Is you as big as zero?If so,you is the sum of the sum of the sum of a big big big big big cat and a big big big cat and a big cat and a cat.If not,you big big big big big cat.Speak thy mind!Ajax:You is the sum of you and a cat.Is you as big as Ford?If not,let us return to Scene X.Page:You is the sum of a big big big cat and a big cat.Speak thy mind![Exit Page][Enter Puck]Ajax:You is the sum of you and a cat.Is you as big as Ford?If not,let us return to Scene V.[Exeunt]
Çevrimiçi deneyin!
Düzenleme: cevabı resmi SPL uygulaması ile uyumlu hale getirdi - daha önce çalışmasını sağlayamadım.
6 byte golf oynadı, çünkü sahne numaralarının ardışık olması gerekmiyor.
Açıklama :
SPL, Shakespeare oyunları gibi görünmek için tasarlanmış bir esolang'dır. Pozitif isimler 1 (burada kedi kullanılır) değerine sahip ve negatif isimler -1 (yok kullanılmış fakat domuz onlardan biri) değerine sahiptir . Sıfatlar bir sabiti 2 ile çarparak değiştirir.
N.
İlk noktaya kadar her şey başlık ve önemli değil.
Puck,. row counter
Page,. column counter
Ford,. input
Ajax,. temp
Karakterler tamsayı değişkenleridir, her birinin de bir yığını vardır ancak bu özelliği kullanmama gerek yoktu.
Act I:.
Scene I:.
Hareketler ve sahneler goto etiketi olarak kullanılır
[Enter Puck and Ford]
Aynı anda sahnede tam olarak iki karakter varsa, kullanışlıdır.
Puck:Listen to thy heart!
Bir sayı okur ve Ford'un hatırlamasını sağlar.
Ford:You is the difference between a cat and I.
Gördüğünüz gibi Engrish SPL'de geçerlidir. Bu Puck'ın değerini "bir kedi ile ben arasındaki farklı" yapar. Ama bu ne demektir? cat
pozitif bir isim, öyleyse öyle Puck = 1 - Ford
.
Scene II:.
[Exeunt]
Exeunt, sadece bir çoğul “çıkış” ve argümanlar olmadan sahnedeki herkesin çıkması anlamına gelir.
[Enter Page and Ajax]
Ajax:You is the difference between a cat and Ford.
Aynı zamanda Page = 1 - Ford
farklı bir oyuncu tarafından konuşuluyor, bu yüzden I
yanlış olurdu. Bu bir döngü olduğundan, sadece değerini kopyalayamıyorum Puck
.
Scene III:.
Page:You is the product of Puck and I.
Şimdiye kadar oldukça basit. Ajax = Puck * Page
.
Is you as big as zero?
"as [as]" olarak ==
operatör.
If so,you is the sum of the sum of the sum of a big big big big big cat and a big big big cat and a big cat and a cat.
Ajax == 0 ... "kedi" 1 ise, "büyük kedi" 2, "büyük kedi" 4 olur ve böyle devam eder. Basit sabitleri değiştirdikten sonra, "32 ve 8 ve 2 ve 1'in toplamının toplamı" -> "40 ve 2 ve 1'in toplamının toplamı" -> "42 ve 1'in toplamını" alırız. -> "43", ki bu da + için ASCII'dir.
If not,you fat fat fat fat fat cat.
Başka bir şey ise sadece "yağ yağ yağ yağ kedi", yani Ajax bir alan için ASCII, 32 değerini alır.
Speak thy mind!
Bu, karakter çıktısı için verilen komuttur.
Ajax:
You sum you and cat.Is you as big as Ford?If not,let us return to Scene III.
Bu bir döngü yapısıdır. "Sen ve kediyi toplarsın" artışları Sayfa, veif(Page != Ford) goto Scene III
. Programın geri kalanı aynı bileşenleri kullanıyor, bu yüzden işte daha okunabilir bir sözde kod sürümü:
Sahne 1:
giriş = [giriş numarası];
satır = 0 - giriş + 1;
Scene2:
col = 0 - giriş + 1;
Scene3:
temp = row * col;
eğer (temp == 0) {
temp = '+';
}Başka{
temp = '';
}
putchar (sıcaklık);
Sayfa = Sayfa + 1;
eğer (Sayfa! = Ford) Scene3'e;
Ajax = 10;
putchar (Ajax);
Disk = Disk + 1;
(Puck! = Ford), Scene2;