Bu meydan okuma, Nisan 2018 LotM meydan okumasının bir parçası olarak gönderildi
Brain-Flak , burada PPCG'de oldukça ün kazandıran bir turing-tarpit dilidir. Dilin hafıza iki istif tarafından oluşur, ancak "gizli" Üçüncü yığını keşfedildi tarafından Wh e Wizard Beyin Flak programlarını düşünme bazı ilginç yeni yollar açan,.
Peki, o kötü gizli üçüncü yığına daha fazla görünürlük kazandırmaya ne dersiniz? Üçüncü yığının hak ettiği bir tanıma sahip olduğu bir dil oluşturalım! İşte size Üçüncü Flak'ı sunuyorum .
Dil
Üçüncü Flak'ta, üçüncü yığın olarak adlandırılan yalnızca bir yığın vardır. Operatörler Beyin Flak yapmak aynı şekilde üçüncü yığın üzerinde çalışmak, ama burada hiçbir vardır []
, {}
, <>
nilads ve hiçbir {...}
monad (Bir Üçüncü Flak programında tek çaresinin karakterlerdir böylece ()[]<>
). Her operatörün yaptığı şey (son öğenin yığının en üstünde olduğu bir liste ile üçüncü yığını temsil eden örnekler verilecektir):
()
Üçüncü Flak'taki tek iki karakterli operatördür. Üçüncü yığının tepesini 1 arttırır. Örnek:[1,2,3]
→[1,2,4]
(
,[
,<
Bir önceki durumda kapsamadığı tüm açma parantezler bir itme0
üçüncü yığına. Örnek:[1,2,3]
→[1,2,3,0]
)
üçüncü yığından iki eleman çıkarır ve toplamlarını geri iter. Örnek:[1,2,3]
→[1,5]
]
üçüncü yığındaki iki öğeyi açar ve ilk öğeyi ikinciden çıkarmanın sonucunu geri iter. Örnek:[1,2,3]
→[1,-1]
>
üçüncü yığından bir öğe açar. Örnek[1,2,3]
→[1,2]
Ve işte dilin diğer kuralları:
Yürütmenin başında üçüncü yığın yalnızca tek bir 0 içerir.
Boş
[]
veya<>
bir programın içinde olması yasaktır (Third-Flak'ın semantiğini takip ederse yine de noops olacaklar, ancak aslında Brain-Flak'ta burada yeniden yaratılması mümkün olmayan farklı bir anlamı var).Parantezler, programın sonunda sondaki kapanış parantezlerinin eksik olması dışında, her zaman dengelenmelidir. Örnek olarak,
[()<(()
geçerli bir Üçüncü Flak programıdır (ve programın sonundaki üçüncü yığın[1,0,1]
).Bir program yalnızca izin verilen altı karakteri içerebilir
()[]<>
. Programların boş olmadığı garanti edilir.
Not: Önceki kurallarda boş bir yığından gelmeniz gereken durumlarla uğraşmanız gerekmediği ima edilir.
Meydan okuma
Basit, Üçüncü Flak için bir tercüman yaz. Programınız bir Third-Flak programı girdi olarak almalı ve program sonunda üçüncü yığının durumunu çıktı olarak döndürmelidir.
Çıktı biçiminiz, üçüncü yığının durumunu net bir şekilde okumak mümkün olduğu sürece esnektir ve aynı sayı her zaman aynı şekilde kodlanır (Bu sadece açık bir şekilde olmayan herhangi bir çıktı biçiminin hile yapmaya çalışmak iyidir).
Çıktı seçiminiz, zorluğu önemsizleştirmediği sürece yönetebileceğiniz sayı aralığını kısıtlayabilir (bu, varsayılan bir boşluk olacağından ).
Test senaryoları
Her test durumu için ilk satır giriştir ve ikinci satır çıktı yığını, yığının üst kısmının son öğe olduğu boşlukla ayrılmış bir sayı listesi olarak temsil edilir.
[()<(()
0 1 0 1
[((((()()()()()))
0 0 0 5
((([()][()][()])))
-3
[<<(((()()()())(((((
0 0 0 0 0 4 0 0 0 0 0
[()]<(([()])><[()]
-1 0 -1
(())(()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(())(()()())(())(()()()()())(())(())(())(())(()()()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(())(()()())(())(()()()()())(())(())(())(())(())(())(()())(())(())(())(()())(()()()())(())(()()()()())(()())(()())(()())(()()())(())(()())(())(()()()()())(()())(()()()()())(())(())(())(())(())(()())(())(())(())(()()()()())(())(())(()()()()())(())(())(()()()()())(())(())(()())(())(()())(())(()())(())(()())(())(()())(()())(()())(()())(()())(()())(()())(()())(())(()()()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(())(()()())(())(())(()()())(()())(())(()()()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(())(())(())(()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(()()())(())(()()())(())(())(())(()())(()()())(()())(())(()()()()())(()())(())(()()())(())(()()()()())(())(())(())(()()())(())(())(())(()())(())(()())(()()()())(())(())(()()()()())(()())(()())(())(()()())(())(())(())(())(()()())(()())(())(())(()()()()())(())(())(()()()()())(())(())(()()()()())(())(())(()())(())(()())(())(()())(())(()())(()())(()())(()())(())(()()()()())(()())(())(()()())(())(()()()()())(()()()()())(())(()()())(())(())(()())(())(()()()()())(())(()()()()())(())(())(())(()()()()())(())(())(()())(())(()())(())(()())(())(()())(())(()())(()())(()())(()())(())(()()()()())(()())(())(()()())(())(())(()())(())(()()()()())(()())(()()()()())(())(()()())(())(())(()()()()())(())(()()()()())(())(())(())(()())(())(()()()()())(())(())(()())(())(()())(())(()())(()())(()())(()())(())(()()()()())(()())(())(()()()()())(())(()()())(())(())(()())(())(()()()()())(()())(()()()()())(())(()()())(())(())(())(()())(()()()())(())(())(()())(())(()()()()())(())(())(()()()()())(())(())(()()()()())(())(())(()())(())(()())(())(()())(())(()())(())(()())(()())(()())(()())(()())(()())(())(()()())(())(())(()())(())(()()()()())(()())(()()()()())(()()())(())(())(()())(())(())(()()()()())(()()()())(()())(()())(()()())(())(()())(())(()()()()())(()())(()()()()())(())(())(())(()()()())(()()()())(()()
718 2
e
olan burada .
[()]
, boş bir yığından haşhaş hakkında endişelenmemiz gerekmeyen kuralı