लोकप्रिय वेबकॉम होमस्टक एक प्रोग्रामिंग भाषा का उपयोग करता है जिसे ~ATH
ब्रह्मांडों को नष्ट करने के लिए कहा जाता है। हालांकि यह कोड गोल्फ चुनौती हमारे अस्तित्व को खत्म करने के लिए एक कार्यक्रम लिखने के लिए नहीं है, हम कुछ और tame (यद्यपि कम दिलचस्प) संस्थाओं को नष्ट कर देंगे: चर ।
~ATH
(उच्चारण "टिल डेथ," ध्यान दें कि ~ath
"टिल्ड एथलीट" कैसा होता है) एक वैरिएबल बनाकर काम करता है THIS
, जिसके साथ एक कमांड निष्पादित होता है EXECUTE
, और प्रोग्राम को पूरा करता है THIS.DIE()
। होमस्टक में भाषा के उपयोग के लिए एक विकी पृष्ठ यहां पाया जा सकता है । इस चुनौती का लक्ष्य ~ATH
दुभाषिया बनाना होगा ।
चुनौती के लिए, मैं कुछ विवरण बनाने जा रहा हूं ~ATH
जो वास्तव में मौजूद नहीं हैं लेकिन इसे (कुछ हद तक) उपयोगी बनाते हैं।
- भाषा केवल पूर्णांकों के साथ काम करेगी, जिन्हें साथ घोषित किया गया है
import <variable name>;
। चर स्वचालित रूप से 0. के मान पर सेट हो जाएगा। एक समय में केवल एक चर आयात किया जा सकता है। - एक चर
x
लेखन से कॉपी किया जा सकताbifurcate x[y,z];
है, जो चर को नष्ट करेगाx
और समान चर के साथ बदलनेy
औरz
। ध्यान दें कि यह हटाए गए नाम के समान चर नहीं बना सकता है। अनिवार्य रूप से, एक चर का नाम बदल दिया जाता है, फिर एक अलग नाम के साथ चर की एक प्रति बनाई जाती है। यह एक बेवकूफ सुविधा की तरह लगता है, लेकिन मूर्खता है बहुत गहरा जमा हुआ Homestuck में। - एक प्रोग्राम लिखने का सिंटैक्स जो कोड को निष्पादित करता
x
है~ATH(x){EXECUTE(<code>)}
। यदि आप एक साथ दो चर पर कोड निष्पादित करना चाहते हैं, तो कोड नेस्टेड हो जाता है, जैसे~ATH(x){~ATH(y){EXECUTE(<code>)}}
:। सभी आदेशों में<code>
दोनों पर निष्पादित किया जाएगाx
औरy
। - अब आज्ञाओं पर चलते हैं।
+
1 से प्रासंगिक चर (ओं) को बढ़ाता है और-
1. से घटाता है। और यह बात है। - इसकी अंतिम विशेषता
~ATH
यह है कि यह जो भी काम करता है उसे मार देता है। चर को<name>=<value>
कमांड में प्रारूप (एक नई पंक्ति के बाद) में मुद्रित किया जाता है[<name>].DIE();
। बाद में, प्रोग्राम शब्दDIE <name>
और एक नई पंक्ति को कई बार प्रिंट करता है , जो वैरिएबल के निरपेक्ष मान के बराबर होता है। जब चर एक साथ मारे जाते हैं[<name1>,<name2>].DIE();
(आप जितने चाहें उतने चर मारे जा सकते हैं, तो जब तक वे मौजूद हैं),DIE()
क्रम को चर पर क्रम से निष्पादित किया जाता है।
उदाहरण कार्यक्रम
कार्यक्रम 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
आउटपुट:
sollux=-2
DIE sollux
DIE sollux
eridan=6
DIE eridan
DIE eridan
DIE eridan
DIE eridan
DIE eridan
DIE eridan
कार्यक्रम 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
आउटपुट:
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
यह कोड गोल्फ है, इसलिए मानक नियम लागू होते हैं। बाइट्स में सबसे छोटा कोड जीतता है।
~ATH
के लिए लाइन अंत के रूप में अर्धविराम का उपयोग करता है import
, bifurcate
और DIE
आदेशों। REPL और फ़ाइलें दोनों ठीक हैं। इनपुट और आउटपुट दोनों में केस सेंसिटिविटी की आवश्यकता होती है (मैं वास्तविक से ~ATH
यथासंभव मिलान करने की कोशिश कर रहा हूं )।