सीएपीएल 1.5+; बिना इनपुट के 6; इनपुट के साथ 10 - 10 = 0
सिडेनोट
मैंने कहीं पढ़ा है [लिंक?] कि कस्टम भाषा गोल्फिंग सवालों की अनुमति नहीं है, क्योंकि वे बिल्ट-इन फ़ंक्शंस कर सकते हैं जो वास्तव में सवाल पूछ रहे हैं, लेकिन मैंने सामान्य रूप से गोल्फिंग को आसान बनाने के लिए CAPL किया । अगर आपको लगता है कि यहां इसकी अनुमति नहीं है, तो मुझे बताएं!
मुझे कुछ विचार मिले > <> और बेफंगे (आप संख्याओं को आगे बढ़ाने के लिए लाइनों के बीच ले जा सकते हैं और हेक्साडेसिमल वर्णों का उपयोग कर सकते हैं), कुछ रूबी से और कुछ मेरे खुद से गोल्फ को आसान बनाने के लिए।
सीएपीएल बाएं से दाएं पढ़ता है, और लाइन के अंत में एक पंक्ति नीचे जाती है। यदि यह अंतिम पंक्ति के रूप में है, तो प्रोग्राम छोड़ देगा।
जैसा कि कोई भी इस भाषा को नहीं जानता है, मैं जितना संभव हो उतना समझाने की कोशिश करूंगा।
आउटपुट वाई। 6 बाइट्स
bb*.n<
bb*
b
के लिए हेक्साडेसिमल है 11
, इसलिए bb*
है 11*11
= 121
जिनमें से UTF-8 बराबर है, y
। यह मान स्टैक पर धकेल दिया जाता है।
.
स्टैक से शीर्ष मान, और UTF-8 के रूप में आउटपुट देता है। जैसा 121
कि स्टैक के शीर्ष पर है, सूचकांक को यहां अनदेखा किया गया है।
n
एक नई लाइन आउटपुट
<
को सूचक को लाइन की शुरुआत में वापस भेजती है, इस प्रकार उस लाइन को दोहराता है। जैसा कि हम इनपुट की उम्मीद नहीं करते हैं, हम इनपुट के लिए फिर से पूछे बिना इसे सुरक्षित रूप से कर सकते हैं।
इनपुट से आउटपुट। 10 बाइट्स, बोनस के बाद 0
i~a&{X:.)}
i
उपयोगकर्ता से इनपुट लेता है, स्टैक के शीर्ष पर UTF-8 के रूप में धक्का देता है, और उसके बाद की लंबाई को धक्का देता है। यानी [72,101,108,108,111,5]
~
स्टैक से एक नंबर पॉप करता है, फिर बाइट्स की मात्रा को उलट देता है। यानी [111,108,108,101,72]
a
हेक्साडेसिमल 10
, न्यूलाइन वर्ण
&{...}
अनंत लूप बनाता है। हमारे पास इनपुट है, इसलिए हम सूचक को लाइन में वापस नहीं भेज सकते हैं। मैं फ़ंक्शन को नीचे दी गई पंक्ति पर रख सकता हूं, जो मुझे एक बाइट सुरक्षित करेगा, लेकिन इस चुनौती में नए अंक की अनुमति नहीं है।
X
स्टैक से शीर्ष मान निकालता है (लूप से सूचकांक)
:.
शीर्ष मूल्य को दोहराता है, फिर UTF-8
)
टर्न स्टैक दाएं के रूप में आउटपुट करता है । ( [1,2,3,4,5]
-> [5,1,2,3,4]
)
होवर, इसका मतलब है कि हम एक नई रेखा के साथ शुरू करते हैं, फिर इनपुट को आउटपुट करना शुरू करते हैं, फिर एक नई लाइन, फिर इनपुट इत्यादि। यदि हमें नई लाइन के साथ शुरुआत करने की अनुमति नहीं है, तो 12 बाइट्स के साथ निम्नलिखित कोड का उपयोग करें, या 2 घटाना के बाद बोनस।
iXa#~&{X:.)}
यहां केवल नया कमांड है #
, जो स्टैक पर आइटम की मात्रा को स्टैक पर धकेलता है।
मैंने लंबाई को हटा दिया i
, क्योंकि 1 को जोड़ने पर, फिर से नई लाइन के साथ स्वैप करना लंबाई को हटाने और फिर से प्राप्त करने से अधिक है।
सिर्फ मनोरंजन के लिए, यहां "हैलो वर्ल्ड" कार्यक्रम है
"Hello World"#~
#?!;.<
?!
आपरेशन> <> के रूप में ही है
y
या\n
अंदर नहीं करना चाहिए" के रूप में पढ़ना चाहिए ?