जवाबों:
चूंकि यह 05AB1E के GitHub पृष्ठों पर विकी का हिस्सा नहीं था (मुझे लगता है कि यह होना चाहिए), मैं इसे अभी यहाँ जोड़ने जा रहा हूँ कि मैं इसे बेहतर ढंग से खुद समझूँ ।
05AB1E निम्नलिखित है words.ex शब्दकोश फ़ाइल सभी शब्द यह जानता हैं। लेकिन हम इस शब्दकोश में शब्दों का उपयोग कैसे करते हैं? आइए शब्द "testing"
को उदाहरण के रूप में लें:
"testing"
शब्दकोश फ़ाइल की 1453 पंक्ति पर पाया जा सकता है। चूंकि पहली दो पंक्तियों में शब्द नहीं हैं, और हमें 0-अनुक्रमित शब्द की आवश्यकता है, हम 3. घटाते हैं।
इसलिए, अब हमारे पास सूचकांक ( 1450
) है, लेकिन इसका उपयोग कैसे करें?
हम खोलने के लिए और के साथ एक संकुचित स्ट्रिंग शुरू “
† । हम फिर info.txt फ़ाइल के दूसरे कॉलम को देखते हैं । (तो €
०० है; ‚
०१ है; आदि) इस साधन
के मामले में (१४) और (५०)।"testing"
î
»
के लिए संकुचित स्ट्रिंग "testing"
इसलिए है: “
इसे ऑनलाइन आज़माएं। कोड के लगभग सभी 05AB1E टुकड़ों के साथ, “
यदि आप स्ट्रिंग का उपयोग नहीं करते हैं , तो अनुगामी वैकल्पिक है, इसलिए इस मामले में भी काम नहीं करता है ।
ध्यान देने योग्य कुछ बातें:
सभी वर्ण जिनके पास info.txt फ़ाइल में कोई अनुक्रमणिका नहीं है, का उपयोग किया जा सकता है। यह s
विलक्षण शब्द के बजाय बहुवचन को जोड़ने या ,.?!
उदाहरण के लिए विराम चिह्न का उपयोग करने के लिए उपयोगी हो सकता है ।
ÿ
(स्ट्रिंग-इंटरपोलेशन) का उपयोग तब भी किया जा सकता है जब आप स्ट्रिंग के भीतर स्टैक से मान सम्मिलित करना चाहते हैं।
नोट: प्रत्येक ढीला वर्ण जिसमें कोई भी सूचकांक नहीं है। सूचना फ़ाइल में नीचे संपीड़न प्रकारों के लिए एक शब्द के रूप में गिना जाता है।
† संकुचित तार आप उपयोग कर सकते हैं के विभिन्न प्रकार के होते हैं:
'
: एक एकल संपीड़ित शब्द लें, जो '
आवश्यक नहीं है ( आवश्यक नहीं है) - 'î»
: "परीक्षण"„
: अंतरिक्ष सीमांकक के साथ दो संकुचित शब्द लेता है (कोई अनुगामी „
आवश्यक नहीं) - „î»î»
: "परीक्षण परीक्षण"…
: अंतरिक्ष सीमांकक के साथ तीन संकुचित शब्द लेता है (कोई अनुगामी …
आवश्यक नहीं) - …î»î»î»
: "परीक्षण परीक्षण परीक्षण"“
: अंतरिक्ष सीमांकक के साथ संकुचित स्ट्रिंग लें - “î»î»“
: "परीक्षण परीक्षण"’
: संपीड़ित स्ट्रिंग को बिना निहित स्थानों के ले लो - ’î»î»’
: "टेस्टिंगटाइटिंग"”
: अंतरिक्ष परिसीमन के साथ शीर्षक-मामले में संकुचित स्ट्रिंग लें - ”î»î»”
: "परीक्षण परीक्षण"‘
: पूर्ण परिधि के साथ संपीड़ित स्ट्रिंग को अंतरिक्ष सीमांकक के साथ लें - ‘î»î»‘
: "परीक्षण परीक्षण"यहाँ शब्दों के अंतरिक्ष-सीमांकित इनपुट के आधार पर संपीड़ित स्ट्रिंग प्राप्त करने के लिए एक उपयोगी कार्यक्रम है:
'“? lAð«Ã#¸˜ vyU "€‚ƒ„…†‡ˆ‰Š‹ŒŽ•–—™š›œžŸ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîï" Dâ vy"“ÿ“".V XlQi y?1#] '“,
यह कार्यक्रम होगा:
lAð«Ã#
), या सूची में शब्दों को लपेटता है यदि केवल एक शब्द इनपुट किया गया था ( ¸˜
)vyU
)"€...ï"Dâvy
) से प्रत्येक संकुचित शब्द पर एक आंतरिक लूप है , जिसे वह 05AB1E प्रोग्राम ( "“ÿ“".V
) के रूप में चलाने की कोशिश करेगाXlQiy?1#
एक इनपुट good bye world
के साथ आउटपुट इसलिए होगा “‚¿Þ¡‚ï“
। इसे ऑनलाइन आज़माएं।
नोट: आपको अभी भी यह देखना होगा कि इस जनरेटर के काम करने के लिए शब्द शब्दकोश में मौजूद है या नहीं, और यह किसी विशेष वर्ण या बहुवचन शब्दों को अनदेखा करेगा। केवल वही शब्द जो शब्दकोश में बिल्कुल समान हैं, मिल जाएंगे।
यहां एक उदाहरण है जहां मैं …Ÿ™‚ï!
स्ट्रिंग के लिए उपयोग करता हूं "हैलो वर्ल्ड!" और ’‚¿Þ¡ ÿ ‚ï!’
स्ट्रिंग के लिए "अलविदा! दुनिया!"। ध्यान दें कि रिक्त स्थान और विस्मयादिबोधक चिह्न का उपयोग किस प्रकार किया जाता है, क्योंकि उनके पास info.txt फ़ाइल में सूचकांक नहीं हैं। इसके अलावा, यह ÿ
"क्रूर" सम्मिलित करने के लिए उपयोग करता है जो स्टैक के शीर्ष पर था, जो दुर्भाग्य से शब्दकोष का हिस्सा नहीं था (लेकिन नीचे अनुभाग में विधि का उपयोग करके अभी भी संकुचित था)।
हालाँकि, word.ex डिक्शनरी फ़ाइल बहुत बड़ी है (10,000 शब्द सटीक होने के लिए), यह हो सकता है कि आपको एक ऐसे शब्द की आवश्यकता हो, जो इसका हिस्सा न हो, या एक स्ट्रिंग जो सिर्फ सादा गिब्रिश हो। तो क्या उन को भी संकुचित करने का कोई तरीका है?
वहाँ निश्चित रूप से, का उपयोग करके .•
, जो एक संकुचित आधार 255 वर्णमाला आधारित स्ट्रिंग है। नोट: इस विधि का उपयोग केवल लोअरकेस वर्णमाला और रिक्त स्थान के वर्णों के लिए किया जा सकता है।
यहां एक शब्द / स्ट्रिंग को संपीड़ित आधार-255 वर्णमाला आधारित स्ट्रिंग में बदलने के लिए एक उपयोगी कार्यक्रम है:
vAyk})> 27β 255B ".•ÿ•"
इस कार्यक्रम के ऊपर क्या है:
vAyk})>
: इनपुट के अलग-अलग अक्षरों के 1-अनुक्रमित वर्णमाला सूचक को लें, जिसमें रिक्त स्थान 0 हो27β
: इन सूचकांकों को आधार संख्या से एकल संख्या में परिवर्तित करें255B
: 05AB1E के स्वयं के कोड पेज का उपयोग करके इस संख्या को Base-255 में बदलें".•ÿ•"
: इस संकुचित स्ट्रिंग से पहले एक अग्रणी .•
और अनुगामी स्थान•
यहां एक उदाहरण का जवाब है जहां @Kaldo.•zíΘ•
शब्द "हंस" को संपीड़ित करने के लिए उपयोग करता है।
मान लीजिए कि हम किसी चीज़ के लिए बहुत बड़ी संख्या का उपयोग करना चाहते हैं, लेकिन यह वास्तव में पॉव-गणना द्वारा पुनर्प्राप्त नहीं किया जा सकता है। उदाहरण के लिए, मान लें कि हम 18238098189071058293
किसी भी कारण से बड़े पूर्णांक तक पहुँच प्राप्त करना चाहते हैं ।
इस मामले में हम •
प्रारूप में एक संख्या को संपीड़ित करने के लिए एक अग्रणी और अनुगामी दोनों का उपयोग कर सकते हैं [1-9][0-9]+
।
ऊपर का उदाहरण नंबर बन जाएगा •15Y₁Ò'Θpc•
। इसे ऑनलाइन आज़माएं। फिर से, संकुचित शब्दकोश स्ट्रिंग के साथ की तरह, अनुगामी •
वैकल्पिक रूप से हटाया जा सकता है ।
वैकल्पिक रूप से, जब पूर्णांक छोटा होता है, तो केवल 2 संपीड़ित वर्णों का उपयोग करना होता है, हम Ž
इसके बजाय उपयोग कर सकते हैं , जिस स्थिति में हमें इसे बंद करने के लिए अनुगामी बाइट की आवश्यकता नहीं होगी और पूर्णांक 4. के बजाय 3 बाइट्स में संपीड़ित है। उदाहरण के लिए, पूर्णांक में 13562
परिणाम होगा •rl•
, लेकिन क्योंकि यह केवल दो वर्णों का उपयोग करता है, यह Žrl
इसके बजाय हो सकता है ।
इसके अलावा, रेंज में संख्याओं को [101, 355]
2 बाइट्स में संकुचित किया जा सकता है Ƶ
और साथ ही 05AB1E के कोडपेज से एक अतिरिक्त चरित्र का उपयोग किया जा सकता है । तो उदाहरण के लिए, Ƶ–
पूर्णांक के लिए इस्तेमाल किया जा सकता है 250
। यहां सभी उपलब्ध नंबरों का अवलोकन किया गया है। इन वर्णों को बेस -255 से बेस -10 में बदल दिया जाता है, और फिर 101 जोड़ा जाता है (क्योंकि सीमा में संख्या [0,100]
पहले से 1 या 2 बाइट्स हैं)।
ये कैसे 15Y₁Ò'Θpc
और rl
बनाए जाते हैं? बहुत ही सरल, संख्या को 05AB1E के अपने कोडपेज का उपयोग करके बेस-255 में बदल दिया गया है। तो आप निम्नलिखित प्रोग्राम का उपयोग कर सकते हैं एक संकुचित संख्या, जिसके लिए यह तो उपयोग करेगा प्राप्त करने के लिए Ƶ.
, Ž..
या •...•
संकुचित पूर्णांक के आकार के आधार:
101 355Ÿså i 101-255B"Ƶÿ" ë 255B Dg2Qi "Žÿ" ë "•ÿ•"
यहां एक उदाहरण उत्तर दिया गया है जहां @Emigna•3Èñ•
पूर्णांक के लिए उपयोग करता है 246060
।
कभी-कभी आप एक ही नंबर के बजाय पूर्णांक की पूरी सूची को संक्षिप्त करना चाहते हैं। उदाहरण के लिए, मान लें कि हम [5,93,17,83,4,44,32,19,4,45,83,90,0,14,3,17,17,81]
किसी भी कारण से सूची चाहते हैं । इस मामले में, हम इसके बजाय निम्नलिखित का उपयोग कर सकते हैं: •4βŸ{©£MG]q‡dZΘp•94в
इसे ऑनलाइन आज़माएं।
यहाँ एक उपयोगी प्रोग्राम जो इस संकुचित संख्या और आधार दोनों को जनरेट करना चाहता है:
Z>© β 255B ®s"•ÿ•ÿв"
इस कार्यक्रम के ऊपर क्या है:
Z>
: इनपुट-सूची की अधिकतम संख्या + 1 प्राप्त करें ( ©
और इसे रजिस्टर में संग्रहीत करें)β
: इनपुट सूची को आधार max+1
से एकल संख्या में परिवर्तित करें255B
: इस एकल संख्या को संपीड़ित करें (जैसा कि हमने ऊपर अनुभाग में किया था)®s"•ÿ•ÿв"
: प्रारूप में परिणाम देता है: अग्रणी •
, संपीड़ित संख्या •
, अधिकतम, 1, अनुगामीв
यहां एक उदाहरण का उत्तर है जहां मैं •4Œ”dóŒfÝŸĀTUÕáOyÖOÀÁàu¼6¹₆Žr‡_›y³eß₂©ǝ²ƶ"SAÎAñ'¡û†Ø(•91в
सूची को संक्षिप्त करने के लिए उपयोग करता हूं [85,30,29,39,28,37,33,88,31,40,34,89,35,41,32,90,36,38,42,43,44,60,45,61,46,62,47,63,48,64,49,65,81,50,66,51,67,52,68,53,69,86,54,70,87,55,71,56,72,82,57,73,79,80,58,74,59,75,76,77,78,83,84]
।
पुनश्च: इस उत्तर •6j|eDEJÞó(ÍêΓλùÄÞKüzHÇ-ø`JδŠ₂+Öηôî®À8†6/ðÎ6ùøΓ°ÓĆ;ˆ©Ā•2ô
में एक बराबर-बाइट्स (57) विकल्प है, क्योंकि सभी संख्याओं के ठीक दो अंक हैं। कुछ मामलों में (विशेष रूप से छोटी सूचियाँ) यह एक छोटा विकल्प हो सकता है।
पूर्णांक संपीड़न बनाम पूर्णांक सूची संपीड़न:
इन दोनों के साथ यह किसी भी तरह से जा सकता है। कभी-कभी एक संकुचित सूची छोटी होती है, कभी-कभी एक संपीड़ित पूर्णांक, कभी-कभी एक पूरी तरह से अलग विकल्प छोटा होता है। इसलिए हमेशा ऊपर के जनरेटर पर पूरी तरह से भरोसा करने के बजाय, अपने स्वयं के निर्णय और गोल्फ कौशल का उपयोग संभवतः गोल्फ चीजों को आगे बढ़ाने के लिए करें। यहाँ कुछ उदाहरण हैं:
[44, 59]
( @Emigna के इस उत्तर में प्रयुक्त ):
•A–•60в
7 बाइट्स (संकुचित पूर्णांक सूची जनरेटर द्वारा उत्पन्न) है•H|•2ô
या •H|•2ä
हार्डकोड 44 59‚
सभी 6 बाइट्स हैंŽH|2ô
या ŽH|2ä
दोनों 5 बाइट्स हैं„,;Ç
4 बाइट्स सबसे अच्छा विकल्प होगा (वर्णों के कोडप्वाइंट ',' और ';');[2,4,6,0]
( @Emigna के इस उत्तर में प्रयुक्त ):
•3ā•7в
6 बाइट्स (संकुचित पूर्णांक सूची जनरेटर द्वारा उत्पन्न) हैŽ3ā7в
5 बाइट्स हैŽ9¦S
4 बाइट्स सबसे अच्छा विकल्प होगा (अंकों की सूची में पूर्णांक 2460 संकुचित)10101001100101001
( मेरे इस उत्तर में प्रयुक्त ):
•a½₄Ƶ6®í•
9 बाइट्स (संकुचित बड़े पूर्णांक जनरेटर द्वारा उत्पन्न) है•1∊}•2вJ
8 बाइट्स हैं (जोड जॉइन के साथ कंप्रेस्ड पूर्णांक सूची जनरेटर द्वारा उत्पन्न)•1∊}•b
में 6 बाइट के साथ सबसे अच्छा विकल्प होगा (संकुचित पूर्णांक सूची, बाइनरी के बजाय बाइनरी के साथ 2в
, जिसमें निहित है)[85,30,29,39,28,37,33,88,31,40,34,89,35,41,32,90,36,38,42,43,44,60,45,61,46,62,47,63,48,64,49,65,81,50,66,51,67,52,68,53,69,86,54,70,87,55,71,56,72,82,57,73,79,80,58,74,59,75,76,77,78,83,84]
( मेरे इस उत्तर में प्रयुक्त ):
•4Œ”dóŒfÝŸĀTUÕáOyÖOÀÁàu¼6¹₆Žr‡_›y³eß₂©ǝ²ƶ"SAÎAñ'¡û†Ø(•91в
57 बाइट्स है (संकुचित पूर्णांक सूची जनरेटर द्वारा उत्पन्न)•6j|eDEJÞó(ÍêΓλùÄÞKüzHÇ-ø
J + /ôî®À8 δŠ₂ 6 / ù6ΓøÓĆ ° Öη; Ā © `• 2ô` भी 57 बाइट्स हैं (संकुचित पूर्णांक, आकार 2 के भागों में विभाजित)•Bšā¿ÑáζΔÕæ₅"®GÙ₂®°ƶío"§óÏ4¸bćÔ!₃ùZFúÐìŸ
,λ₂ϦP(Ì•65в₂+
हालांकि 2 बाइट्स कम है, प्रत्येक मूल्य 26 कम के साथ सूची संपीड़न करके, और उसके बाद `` + `के साथ जोड़ें । बाद में एक-बाइट मान जोड़ने की यह चाल बहुत बार संपीड़ित सूचियों में बाइट्स को बचाने के लिए उपयोग की जा सकती है।उन दिनों में जब 05AB1E जारी किया गया था, अंतर्निहित इनपुट काफी नया और फैंसी था। आजकल अन्य प्रतिस्पर्धी भाषाओं (जैसे जेली, MATL, पायथ, आदि) के साथ नज़र रखने के लिए यह आवश्यक प्रतीत होता है।
उदाहरण के लिए, जब आप दो नंबर जोड़ना चाहते हैं, आप कर सकते हैं II+
:
I # Input_1.
I # Input_2.
+ # Add them up.
हालांकि, निहित इनपुट का उपयोग करके , हम केवल 1 बाइट को छोटा कर सकते हैं, अर्थात् +
:
+ # Take two numbers implicitly and add them up.
यह केवल तब होता है जब स्टैक की लंबाई ऑपरेटर की समता से छोटी होती है। एक अंतिम उदाहरण है 3+
। +
ऑपरेटर की समता 2 है जबकि स्टैक में केवल 1 तत्व है:
3 # Push the number 3 on top of the stack.
+ # Request implicit input and add to the 3.
£
b
स्ट्रिंग के पहले अक्षर लेने के लिए कमांड है a
।
उदाहरण के लिए: "hello_world"5£
->
"hello"
लेकिन अगर b
सूचकांकों की सूची है, तो इसके बजाय उन आकारों के (स्ट्रिंग तक) भागों में स्ट्रिंग को विभाजित करता है।
उदाहरण के लिए: "hello_world"5L£
->
['h', 'el', 'lo_', 'worl', 'd']
वे 05AB1E में थोड़े छिपे हुए हैं। यहां सभी पूर्वनिर्धारित चर की एक सूची दी गई है:
¾
, धक्का देता है 0
यदि इस कमांड से पहले counter_variable नहीं बदला जाता है।X
, धक्का 1
अगर चर एक्स के साथ इस आदेश से पहले नहीं बदला है U
।Y
, धक्का देता है 2
यदि चर Y इस आदेश से पहले नहीं बदला गया है V
।®
, धक्का देता है -1
कि क्या रजिस्टर इस कमांड के साथ पहले नहीं बदला गया है ©
।¯
, पुश []
(खाली सरणी) यदि इस कमांड से पहले global_array में कुछ भी नहीं जोड़ा गया है।¸
[""]
कोई इनपुट न होने पर खाली स्टैक पर धक्का देता है। (इसको ढूंढने के लिए @Emigna का शुक्रिया।)¾
धक्का 0 => यह गैर-
¾
एक काउंटर वैरिएबल को पुश करता है जिसे 0. के रूप में आरंभीकृत किया गया है। यदि आप केवल 0 को पुश करना चाहते हैं, तो बेशक अधिक प्राकृतिक है, लेकिन यदि आप पुश करना चाहते हैं 5,0,7
, 5¾7
तो 2 बाइट्स से कम है 5 0 7
।
¾
मतलब है .75
, और मैंने एक बार उस तथ्य के साथ पायथ को हराया । इन नए गोल्फ की भाषाओँ में
print(3 / 4)
अजगर 2 में मुझे देता है 0
।
M
धक्का -Inf
।
Λ
या .Λ
)चूँकि यह डॉक्स का हिस्सा नहीं था, और @ अदनान अभी इसे लिखने में थोड़ा व्यस्त है, मैंने इसे अभी के लिए यहां टिप के रूप में जोड़ने की अनुमति मांगी।
कैनवस फ़ंक्शन ( Λ
या .Λ
) का उपयोग स्क्रीन पर ASCII-lines को खींचने के लिए किया जा सकता है। इसके तीन आवश्यक पैरामीटर हैं:
[0,7]
दिशाओं के लिएअंक होते हैं, जिसके लिए हम एक या एकाधिक का उपयोग कर सकते हैं। कुछ विशेष विकल्प भी हैं जिन्हें एक निश्चित चरित्र (बाद में इसके बारे में अधिक) की आवश्यकता होती है।[0,7]
निम्नलिखित दिशाओं के लिए दिशा-अंक का नक्शा:
7 0 1
↖ ↑ ↗
6 ← X → 2
↙ ↓ ↘
5 4 3
कुछ उदाहरण 05AB1E उत्तर जहां कैनवास का उपयोग किया जाता है:
चलो पिछले एक के समान कुछ करते हैं, इसलिए मान लें कि हम Λ
निम्नलिखित तीन मापदंडों के साथ कैनवास फ़ंक्शन का उपयोग करते हैं :
[3,3,5,5,7,7,9,9]
!@#
[0,2,4,6]
यह निम्न आउटपुट देगा:
!@#!@#!
# @
@ #!@ #
! @ # !
# ! ! @
@ @ #
!#@!# !
@
@!#@!#@!#
तो यह कैसे काम करता है? ठीक है, यहाँ ऊपर इन इनपुट्स के साथ चरण दिए गए हैं:
3
वर्ण ( !@#
) ऊपर की ओर (दिशा 0
) खींचें3-1
वर्ण बनाएं !@
( 2
)5-1
वर्ण ( #!@#
) नीचे की ओर (दिशा 4
) खींचें5-1
अक्षर ( !@#!
) को बाईं ओर खींचें (दिशा 6
)7-1
वर्ण ( @#!@#!
) ऊपर की ओर (दिशा 0
) खींचें7-1
वर्ण बनाएं @#!@#!
( 2
)9-1
वर्ण ( @#!@#!@#
) नीचे की ओर (दिशा 4
) खींचें9-1
अक्षर ( !@#!@#!@
) को बाईं ओर खींचें (दिशा 6
)-1
क्योंकि लाइनों ओवरलैप होते हैं। तो पहले दो चरण हैं:
#
@
!
तथा
!@
जो संयुक्त है:
#!@
@
!
कुछ छोटे नोट:
[0,7]
कुछ विशिष्ट विकल्प उपलब्ध हैं, जो मूल रूप से एक निश्चित दिशा-अनुक्रम में अनुवाद करते हैं।
+
( '+
इनलाइन) प्रतिमान में अनुवाद 04402662
करता है, जो +
दी गई लंबाई के हथियारों के साथ एक सकल बनाता है । इसे एक्शन में देखें।×
( '×
इनलाइन) प्रतिमान में अनुवाद 15513773
करता है, जो X
दी गई लंबाई के हथियारों के साथ एक सकल बनाता है । इसे एक्शन में देखें।8
जहाँ से हमने ड्राइंग शुरू की है, उसके मूल में लौटता है। इसे कार्रवाई में देखें और बिना अंतर देखें8
।Λ
इच्छा उत्पादन तुरंत, और .Λ
एक स्ट्रिंग है ढेर है, जो हम अभी भी फिर से उपयोग, संशोधित कर सकते हैं, और साथ है कि हम चाहते हैं कुछ भी करने को धकेल दिया जाता है परिणाम है। कुछ उदाहरण:
+×8
मैं वास्तव में स्रोत कोड में देखा है।
अन्य स्टैक-आधारित भाषाओं की तरह, 05AB1E के फ़ंक्शन आमतौर पर स्टैक से अपने इनपुट को पॉप (उपभोग) करते हैं और स्टैक पर अपने आउटपुट को धक्का देते हैं।
हालांकि, कुछ फ़ंक्शन बिना खपत किए स्टैक से उनके इनपुट प्राप्त करते हैं। एक उदाहरण head
फ़ंक्शन है, ¬
जो इनपुट सूची से पहला तत्व पैदा करता है। एक उदाहरण के कार्यक्रम यहाँ देखें: ¬+
। यह उस सूची के प्रत्येक नंबर पर इनपुट सूची का पहला नंबर जोड़ता है।
यह जानने के लिए कि कौन से कार्य पॉप और कौन से हैं, फ़ंक्शन जानकारी फ़ाइल में संबंधित कॉलम देखें ।
लूप और सशर्त स्वचालित रूप से एक कार्यक्रम के अंत में क्लोजिंग ब्रैकेट प्राप्त करते हैं, इसलिए आपको केवल लूप / सशर्त के बाहर कुछ करने की आवश्यकता होने पर उन्हें कोड में जोड़ना होगा।
उदाहरण के लिए, पहले n
अभाज्य संख्याओं की सूची बनाने वाले इस (अनगुल्ड) कार्यक्रम को समापन कोष्ठक की आवश्यकता नहीं है।
[¹¾Q#NpiNˆ¼
लेकिन अगर हम परिणामी सूची पर कुछ ऑपरेशन करना चाहते हैं, उदाहरण के लिए डेल्टा के वीट लेने के लिए हमें पहले लूप को बंद करना होगा।
[¹¾Q#NpiNˆ¼]¯¥
छोटे गोल्फ टिप्स के साथ इसका विस्तार करूंगा, जो मैंने रास्ते में सीखा। (केवल व्यक्तिगत रूप से 05AB1E शुरू किया गया।)
D
(डुप्लिकेट) और Ð
(तीन प्रतियों) के साथ संयोजन में s
(स्वैप) और Š
(ट्रिपल स्वैप a,b,c
करने के लिए c,a,b
) आम तौर पर उपयोग की तुलना में छोटे होते हैं ©
(में बचाने global_variable ) और ®
(धक्का global_variable ) छोरों के अंदर। इसने मेरे इस उत्तर में एक बाइट को बचाया , साथ ही साथ इस उत्तर में दो भी ।½
(यदि 1 है, तो काउंटर_वर्जेबल को 1 से बढ़ाएं ) एक के अंत में आवश्यक नहीं है µ
(जबकि काउंटर_वर्जेबल ! = ए, डू ...), क्योंकि यह अंतर्निहित रूप से किया गया है ( मेरा इस उत्तर में एक बाइट बचाया )।.B
नई लाइनों पर स्पष्ट रूप से विभाजित है। यह मेरे इस उत्तर में उपयोगी था जब हम ¡
खाली वस्तुओं को रखते हुए (विभाजन) के लिए एक विकल्प की तलाश कर रहे थे (नोट: लिंक किए गए उत्तर में समाधान काम नहीं करता है जब तत्वों में विभाजन के बाद अनुगामी स्थान होते हैं।) - उम्मीद है कि एक बिलिन। विभाजित करने के लिए जोड़ा जा सकता है, लेकिन भविष्य में खाली लाइनें रखें।SÖ
(इनपुट-पूर्णांक के कौन से अंक समान रूप से इनपुट-पूर्णांक को विभाजित कर सकते हैं) अंकों के लिए खुद ही नंबर होगा 0
(विभाजित-शून्य त्रुटियों के बजाय)। उदाहरण के लिए, 1053
परिणाम होगा[1,1053,0,1]
(1053 1 और 3 से विभाज्य है; 5 से विभाज्य नहीं है; और 0 के लिए विभाजन-दर-शून्य त्रुटि देता है)। यह सूची की शक्ति लेने से मेरा इस उत्तर में बहुत उपयोगी था , क्योंकि केवल 1
05AB1E में सच्चाई है और बाकी सब कुछ गलत है। SÖP
सत्य (जिसके परिणामस्वरूप 1
) का अर्थ है कि एक इनपुट-पूर्णांक अपने प्रत्येक अंक द्वारा समान रूप से विभाज्य है।û
(एक दिए गए स्ट्रिंग को पैलिंड्रोमाइज़ करें ) मुझे आश्चर्य हुआ कि कोई is_palindrome बिलिन नहीं है । लेकिन बाद में मुझे एहसास हुआ कि इसे पूरा करने के लिए केवल 2 बाइट्स की आवश्यकता होती है, जो हैं ÂQ
(जहां Â
द्विभाजित है, जो इसके लिए छोटा है DR
: डुप्लिकेट और रिवर्स कॉपी; और Q
यह देखना है कि क्या स्टैक पर शीर्ष दो मान समान हैं)।Ds*
(डुप्लिकेट, स्वैप) के रूप में कार्य करने के लिए (डुप्लिकेट, स्वैप) बनाम की लाइनों के साथ कुछ की आवश्यकता होगी }ʒ
। उदाहरण के लिए: इस चुनौती में हमें चार अंकों की सभी संख्याओं को सूचीबद्ध करना होगा, जिसमें कम से कम एक अंक हो 0
, और एक अंक के बराबर अंक हो 9
। एक सीमा का उपयोग करने [1000,10000]
से चार अंकों की संख्या लंबी हो जाती है, लेकिन फिर आपको दो और फिल्टर के साथ छोड़ दिया जाता है। प्रारंभ में मैंने ₄4°ŸʒD0åsSO9Q*
(14 बाइट्स) का उपयोग किया था, लेकिन दो फ़िल्टर का उपयोग करके एक बाइट को बचाया जा सकता है: ₄4°Ÿʒ0å}ʒSO9Q
(13 बाइट्स)। (जो बाद में @Grimy ₄4°ŸεW°ö9Q
द्वारा (10 बाइट्स) के लिए गोल्फ हो गया।)0
रूप में पूर्णांक के साथ ज़िप करना चाहते हैं , तो आप उपयोग कर सकते हैं 0ζ
। हालांकि इसके साथ एक मुद्दा यह है कि भराव 0
एक स्ट्रिंग बन जाएगा "0"
, इसलिए यदि आप बाद में मिश्रित तार और पूर्णांक के साथ क्रमबद्ध करने का प्रयास करते हैं, तो यह सबसे अधिक संभावना है कि आप जो परिणाम चाहते हैं वह नहीं देगा। यहाँ यह ज़िपित आंतरिक सूचियों को कैसे सॉर्ट करेगा इसका एक उदाहरण है 0ζ€{
:। यह ï
ज़िप के बाद एक स्पष्ट कलाकारों को int ( ) में जोड़कर तय किया जा सकता है , और उसके बाद ही सॉर्ट करें 0ζï€{
:। हालांकि, जिप-फिलर के साथ ¾
निरंतर का उपयोग करते हुए 0
, यह ज़िप के दौरान एक स्ट्रिंग के बजाय पूर्णांक रहने का कारण होगा। तो ¾ζ€{
यहाँ एक बाइट बचाएगा। यह टिप @ Mr.Xcoder द्वारा खान के इस उत्तर में एक बाइट को बचाने के लिए प्रदान की गई थी ।€SO
। हालांकि छोटा उपयोग कर रहा है 1ö
, जो स्वचालित रूप से वेक्टर हो जाता है। यह टिप @Grimy द्वारा यहां बाइट (और 2 बाइट्स ) को सहेजने के लिए प्रदान की गई थी ।2‹
। हालांकि, का उपयोग कर !
के लिए (भाज्य) भी केवल 1 (truthy) में परिणाम होगा 0
और 1
, और हर दूसरे मूल्य उच्च (और इस प्रकार falsey, के बाद से ही कुछ में परिणाम होगा 1
05AB1E में truthy है)। यह टिप यहां बाइट को बचाने के लिए @Grimy द्वारा प्रदान की गई थी ।ध्यान दें कि 05AB1E में कुछ ऑपरेटर सरणियों पर स्वचालित रूप से वेक्टर करते हैं। उदाहरण के लिए, कोड 5L3+
, जो निम्नलिखित छद्म कोड से भिन्न होता है:
[1, 2, 3, 4, 5] + 3
बन जाएगा:
[4, 5, 6, 7, 8]
यदि यह स्वचालित रूप से वेक्टर नहीं करता है, तो आप €
ऑपरेटर का उपयोग भी कर सकते हैं । यह एक एकल वर्ण कमांड लेता है, और प्रत्येक तत्व पर उस (मोनैडिक) ऑपरेटर का प्रदर्शन करता है। प्रत्येक तत्व को विभाजित करने के लिए एक उदाहरण निम्नलिखित कोड है ( इसे यहां देखें ):
€S
जबकि सामान्य S
ऑपरेटर सरणी में प्रत्येक तत्व को विभाजित करेगा और इसे एक ही सरणी ( इसे यहां आज़माएं ) में समतल करेगा ।
ñ
के मान से पहले वाली सूचियों का विलय करें n
। tio.run/nexus/05ab1e#@2/iw2XiE2Tio81ldHjj//8A
यदि आप इनपुट लेते हैं, तो आपके कोड पर कठोर प्रभाव पड़ सकता है, और अक्सर, यदि आप s
स्टैक पर अगली सबसे ऊंची चीज के साथ ढेर के ऊपर स्वैप करने के लिए उपयोग कर रहे हैं, तो आप समस्या के बारे में सही तरीके से नहीं सोच रहे हैं। इनपुट्स को रीऑर्डर करने की कोशिश करें और देखें कि क्या आप समय से पहले इनपुट्स को स्वैप करके या कहीं और स्टैक को जोड़कर या इसे डुप्लिकेट करके स्वैप करने की आवश्यकता से छुटकारा पा सकते हैं। सबसे स्पष्ट I & O सबसे कम सफल 05AB1E उत्तर हो सकता है।
नीचे दिया गया कोड कस्टम आधार रूपांतरण का उपयोग करके ASCII-art को 05AB1E में बदलने में मदद करता है।
|»©ÐÙSDŠ¢øΣθ}R€н¬®sÅ?iD2£RDŠKsì}J©žLR‡®gö₅B®s"•ÿ•“ÿ“ÅвJ"
इसके द्वारा पूरा किया जाता है:
0-9A-Za-z
उस क्रम में इनपुट के पात्रों को मैप करें , प्रत्येक विशिष्ट चरित्र का अपना मैपिंग-चरित्र हो रहा है, जब तक कि हर एक को बदल नहीं दिया जाता।•<compressed_integer>•“<sorted_distinct_characters>“ÅвJ
:।“
आपको स्ट्रिंग-उद्धरण भी संपीड़ित करने की अनुमति देता है "
; , Åв
इस स्ट्रिंग का उपयोग कस्टम बेस के रूप में स्ट्रिंग का उपयोग करके उत्पन्न पूर्णांक को आधार-रूपांतरित करने के लिए करेगा; और J
इन सभी वर्णों को एक साथ एक ही तार में जोड़ देगा, जो कि आउटपुट है।
62 अद्वितीय वर्णों के साथ और ASCII- कला के लिए अच्छे पैटर्न को स्वीकार करता है।
अद्वितीय पात्रों की कम मात्रा, बेहतर संपीड़न।
XNOR डिजिटल टाइमिंग आरेख (214 बाइट्स, 9 अद्वितीय वर्ण) ड्रा के लिए उदाहरण आउटपुट :
┌─┐ ┌─┐ ┌─────┐ ┌─┐ ┌─┐ ┌───┐
A ──┘ └─┘ └─┘ └─┘ └─┘ └─┘ └──
┌───┐ ┌───┐ ┌─┐ ┌─────┐ ┌─┐ ┌─┐
B ┘ └─┘ └─┘ └─┘ └───┘ └─┘ └
┌─────┐ ┌─┐ ┌─┐ ┌───┐
X ──┘ └───┘ └───┘ └───┘ └────
होने वाला:
•I£.µ*:]ó±øqaµb₄ΘYQmœ¹µû₄p´ζÂĆ_5ŠKÑ×ðòË|₄#¹¶úôÂ-Í|¯ε¼É₂ïδ&é–9»ÞFò1î×HÃBjý2ĆÉ≠FYÂÂèC j‘£Å₅Œ•“─ └┘┐┌
XBA“ÅвJ
(106/214) * 100 = 49.53% मूल ASCII- कला स्ट्रिंग का आकार।
जो कि 05AB1E (विरासत) में उस चुनौती के लिए मेरी वास्तविक सबमिशन के समान बाइट-काउंट है ।
नोट: कोड बिल्कुल गोल्फ नहीं है। यह ASCII कला को सबसे कुशल संपीड़न में बदलने के लिए जल्दी से लिखा गया है, इसलिए यह काफी बदसूरत और लंबा है।
|» # Take multi-line input
© # Store it in the register to reuse later
ÐÙS # Only leave unique characters (as list)
DŠ¢ø # Map it with the count for each of those characters
Σθ}R # Sort it based on that count (highest to lowest)
€н # Remove the count again, so the sorted characters remain
¬®sÅ?i # If the input starts with the most occurring character:
D2£RDŠKsì} # Swap the first two characters in the list
J© # Join everything together, and store it in the register to reuse later
žLR‡ # Map each character to [0-9A-Za-z]
®gö # Get the amount of unique characters, and convert it to that Base
₅B # And then convert that to Base-255
®s # Push the string and swap so the compressed integer is at the top again
"•ÿ•“ÿ“ÅвJ" # Insert it in the correct output format
# `•<compressed_integer>•“<sorted_distinct_characters>“ÅвJ`
"•ÿ•" # (after which the result is output implicitly with trailing newline)
<str><compr_int><int>вèJ
अपने के बजाय का उपयोग कर <compr_int><int>BžLR<str>‡
; और स्ट्रिंग-कोट्स के “
बजाय उपयोग करना "
, इसलिए "
इनपुट का हिस्सा हो सकता है।
ऐसा कुछ नहीं, जिससे हर कोई सहमत हो, लेकिन यह काम करता है।
निम्नलिखित दो कार्यक्रमों पर विचार करें:
4 5+
"4""5"+
वे दोनों 9 में परिणाम । ऐसा इसलिए है क्योंकि हर मूल्य का पहले मूल्यांकन (के साथ) किया जाता हैast.literal_eval
) किया जाता है। उसके कारण, हम सभी स्ट्रिंग हेरफेर ऑपरेटरों को इन्ट्स पर और सभी इंट हेरफेर ऑपरेटरों को स्ट्रिंग्स पर कर सकते हैं।
उदाहरण के लिए, 12345û
संख्या में तालमेल होता है 12345
, जिसके परिणामस्वरूप 123454321
। उसके बाद, हम इस नंबर पर नियमित गणित कर सकते हैं।
12345û50000-
यह परिणाम होगा: 123404321 ।
05AB1E में निम्नलिखित सामान्य लूप और पुनरावृत्त हैं:
F
, जो 0 .. n-1 के माध्यम से पुनरावृत्त करता है ।G
, जो 1 .. n-1 के माध्यम से पुनरावृत्त करता है ।ƒ
, जो 0 .. n के माध्यम से पुनरावृत्त करता है ।v
, जो प्रत्येक तत्व पर निर्भर करता है [0], s [1], .., s [n] ।ʒ
, जो वास्तव में लूप नहीं है, लेकिन एक फिल्टर-बाय कमांड है। हम इस आदेश का दुरुपयोग करते हैं क्योंकि यह प्रत्येक तत्व के माध्यम से लूपिंग का अनपेक्षित व्यवहार है।इन छोरों का उपयोग करते हुए, हम निम्नलिखित छिपे हुए छोरों को प्राप्त कर सकते हैं :
gF
, आप उपयोग कर सकते हैं v
जिसमें ए भी हैN
-इंडेक्स किया जा सकता है।vy -> ʒ
प्रतिस्थापन में थोड़ा और अधिक मुश्किल है:
y
इस तरह के लूप में इनवाइट करना संभव नहीं है।[
, µ
और ε
भी सामान्य छोरों / पुनरावृत्तियों का हिस्सा है?
y
इनमें से कुछ के साथ अब संभव है।