Latar Belakang
Stack Cats adalah bahasa esoterik yang dapat dibalik yang dibuat oleh Martin Ender. Setiap perintah dalam Stack Cats adalah kebalikan dari dirinya sendiri (diwakili sebagai karakter simetris, seperti -_:T|), atau memiliki perintah kebalikannya (diwakili sebagai gambar cermin, seperti () {} [] <>). Stack Cats memiliki persyaratan sintaksis yang kuat bahwa keseluruhan program harus menjadi citra cermin itu sendiri. Perhatikan bahwa ini berarti program Stack Cats yang valid adalah ambigram gambar cermin alami .
Berikut ini seluruh rangkaian perintah Stack Cats:
- Simetris diri:
!*+-:=ITX^_| - Pasangan simetris:
(){}[]<>\/
Karakter lain tidak valid; setiap input yang memiliki karakter tidak dalam karakter yang ditetapkan di atas harus menghasilkan false.
Bahasa memiliki kendala tambahan yang harus dipasangkan ()dan {}berpasangan, tetapi demi kesederhanaan, Anda tidak perlu memeriksa kondisi ini.
Berikut ini adalah beberapa contoh program Stack Cats yang valid (sekali lagi, perhatikan bahwa Anda tidak memeriksa parens seimbang):
{[+]==[+]}
[)>^<(]
({T)}|{(T})
<(*]{[:!-_:>}<[<)*(>]>{<:_-!:]}[*)>
Ini bukan:
b<+>d
())(
({[<++<]})
Tantangan
Tulis program atau fungsi yang menentukan apakah string yang diberikan adalah program Stack Cats yang valid. Kode Anda juga harus berupa ambigram gambar cermin alami , yang berarti:
- Kode Anda harus merupakan citra cermin itu sendiri.
- Kode Anda mungkin memiliki satu atau lebih baris baru, selama keseluruhan kode, ditampilkan secara alami, adalah gambar cermin itu sendiri.
- Anda dapat menghilangkan atau menambahkan spasi putih pada setiap baris, karena itu tidak mengubah tampilan.
- Karakter tab tidak diperbolehkan karena mereka memiliki beberapa ambiguitas pada layar.
Catatan: kode Anda tidak harus merupakan program Stack Cats yang valid; mungkin berisi karakter tambahan tertentu yang tidak diperbolehkan di Stack Cats. (Lihat di bawah untuk daftar lengkap.)
Misalnya, dua program berikut ini simetris (dan dengan demikian pengajuan yang valid ), sedangkan yang ketiga tidak:
({bTd})
[<q|p>]
({bTd})
IXI
({bTd})
IXI
- Mengenai "simetri cermin", hanya simetri gaya Kucing Tumpukan yang dipertimbangkan (mis.
({IH})Bukan pengajuan yang valid, meskipun memiliki simetri cermin). - Kode Anda hanya dapat berisi set karakter ini, ditambah baris baru:
- Self-symmetric: space (
0x20) +!"'*+-.8:=AHIMOTUVWXY^_ovwx| - Pasangan simetris:
()/\<>[]bdpq{}
- Self-symmetric: space (
Set karakter dipilih untuk benar-benar simetris atau simetris sendiri ketika ditampilkan sebagai kode pada SE.
Masukan dan keluaran
Rentang input adalah string satu-baris karakter ASCII yang dapat dicetak .
Anda dapat memilih untuk mengambil input sebagai string, daftar karakter, atau daftar nilai ASCII.
Anda dapat memilih untuk menampilkan:
- Nilai-nilai kebenaran / kepalsuan seperti yang didefinisikan oleh bahasa pilihan Anda
- Nilai hasil aktual dapat berbeda antara input (misalnya output 1 untuk input yang benar dan 2 untuk input yang benar lain).
- Bertukar nilai kebenaran dan kepalsuan tidak diizinkan.
- Setiap dua nilai konstan untuk true / false masing-masing
- Dalam hal ini, nilai-nilai hasil harus tepat menjadi salah satu dari dua nilai konstan.
Anda harus menentukan metode input dan nilai output dalam kiriman Anda.
Kondisi Menang
Ini adalah kode-golf , sehingga byte terendah di setiap bahasa menang.
Catatan
- Celah standar dilarang seperti biasa.
- Tentu saja Anda dapat menyelesaikan ini di Stack Cats, tetapi kemungkinan Anda tidak dapat menggunakan flag yang memungkinkan untuk mengurangi ukuran kode Anda hingga setengahnya. Dan ini adalah bahasa yang sangat sulit untuk dipahami: P
#tidak diizinkan?