Homestuck webcomic populer menggunakan bahasa pemrograman yang disebut ~ATH
untuk menghancurkan alam semesta. Walaupun tantangan golf kode ini bukan untuk menulis program untuk memusnahkan keberadaan kita, kita akan menghancurkan entitas yang lebih jinak (meskipun kurang menarik): variabel .
~ATH
(diucapkan "til death," perhatikan bagaimana ~ath
"tilde ath") bekerja dengan membuat variabel yang dipanggil THIS
, menjalankan perintah dengan EXECUTE
, dan menyelesaikan program dengan THIS.DIE()
. Halaman wiki untuk penggunaan bahasa di Homestuck dapat ditemukan di sini . Tujuan dari tantangan ini adalah menciptakan ~ATH
juru bahasa.
Demi tantangan, saya akan membuat beberapa detail ~ATH
yang tidak benar-benar ada tetapi membuatnya (agak) berguna.
- Bahasa hanya akan bekerja dengan bilangan bulat, yang dideklarasikan dengan
import <variable name>;
. Variabel akan secara otomatis ditetapkan ke nilai 0. Hanya satu variabel pada satu waktu yang dapat diimpor. - Suatu variabel
x
dapat disalin dengan menulisbifurcate x[y,z];
, yang akan menghapus variabelx
dan menggantinya dengan variabel yang identiky
danz
. Perhatikan bahwa itu tidak dapat membuat variabel dengan nama yang sama dengan yang dihapus. Pada dasarnya, variabel diubah namanya, kemudian salinan variabel dengan nama yang berbeda dibuat. Hal ini tampaknya seperti fitur bodoh, tapi kebodohan sangat mendalam tertanam di Homestuck. - Sintaks untuk menulis program yang mengeksekusi kode
x
adalah~ATH(x){EXECUTE(<code>)}
. Jika Anda ingin mengeksekusi kode pada dua variabel secara bersamaan, kode menjadi bersarang, seperti ini:~ATH(x){~ATH(y){EXECUTE(<code>)}}
. Semua perintah di<code>
akan dieksekusi pada keduanyax
dany
. - Sekarang mari kita beralih ke perintah.
+
menambah variabel yang relevan dengan 1 dan-
menurunkannya dengan 1. Dan ... itu saja. - Fitur terakhir
~ATH
adalah bahwa ia membunuh apa pun yang bekerja dengannya. Variabel dicetak dalam format<name>=<value>
(diikuti oleh baris baru) pada perintah[<name>].DIE();
. Setelah itu, program mencetak kataDIE <name>
dan baris baru beberapa kali sama dengan nilai absolut dari nilai variabel. Ketika variabel terbunuh secara bersamaan dengan[<name1>,<name2>].DIE();
(Anda dapat memiliki banyak variabel terbunuh seperti yang Anda inginkan, selama mereka ada),DIE()
perintah dieksekusi pada variabel secara berurutan.
Contoh program
Program 1:
import sollux; //calls variable "sollux"
import eridan; //calls variable "eridan"
~ATH(sollux){EXECUTE(--)} //sets the value of "sollux" to -2
~ATH(eridan){EXECUTE(+++++)} //sets the value of "eridan" to 5
[sollux].DIE(); //kills "sollux", prints "DIE sollux" twice
~ATH(eridan){EXECUTE(+)} //sets the value of "eridan" to 6
[eridan].DIE(); //kills "eridan", prints "DIE eridan" 6 times
Keluaran:
sollux=-2
DIE sollux
DIE sollux
eridan=6
DIE eridan
DIE eridan
DIE eridan
DIE eridan
DIE eridan
DIE eridan
Program 2:
import THIS; //calls variable "THIS"
~ATH(THIS){EXECUTE(++++)} //sets the value of "THIS" to 4
bifurcate THIS[THIS1,THIS2]; //deletes "THIS", creates variables "THIS1" and "THIS2" both equal to 4
~ATH(THIS1){EXECUTE(++)} //sets the value of "THIS1" to 6
[THIS1,THIS2].DIE(); //kills "THIS1" and "THIS2", prints "DIE THIS1" 6 times then "DIE THIS2" 4 times
import THAT; //calls variable "THAT"
bifurcate THAT[THESE,THOSE]; //deletes "THAT", creates variables "THESE" and "THOSE"
~ATH(THESE){~ATH(THOSE){EXECUTE(+++)}EXECUTE(++)} //sets the value of "THESE" and "THOSE" to 3, then sets the value of "THESE" to 5
[THESE,THOSE].DIE(); //kills "THESE" and "THOSE", prints "DIE THESE" 5 times then "DIE THOSE" 3 times
Keluaran:
THIS1=6
DIE THIS1
DIE THIS1
DIE THIS1
DIE THIS1
DIE THIS1
DIE THIS1
THIS2=4
DIE THIS2
DIE THIS2
DIE THIS2
DIE THIS2
THESE=5
DIE THESE
DIE THESE
DIE THESE
DIE THESE
DIE THESE
THOSE=3
DIE THOSE
DIE THOSE
DIE THOSE
Ini kode golf, jadi aturan standar berlaku. Kode terpendek dalam byte menang.
~ATH
menggunakan titik koma sebagai line-akhiran untuk import
, bifurcate
dan DIE
perintah. Baik REPL dan file baik-baik saja. Sensitivitas kasus diperlukan baik dalam input maupun output (Saya mencoba mencocokkan yang sebenarnya ~ATH
sebanyak mungkin).