लिस्प में गोल्फ के लिए टिप्स


9

लिस्प (किसी भी बोली) में गोल्फिंग के लिए ये कौन से सामान्य सुझाव हैं? कृपया प्रति उत्तर एक टिप पोस्ट करें, और केवल उत्तर जो कि लिस्प की एक बोली के लिए विशिष्ट हैं (उदाहरण के लिए "टिप्पणियां हटाएं" एक उत्तर नहीं है)।

कृपया लिस्प की बोली को अपने टिप के साथ लागू करें।



1
क्या आपको लगता है कि ये स्कीम और रैकेट में गोल्फ के लिए अलग-अलग होंगे ?
एलेक्स ए।

1
मैं टिनिस्प, अपने गोल्फ सुख के लिए लिस्प के एक छोटे, छीन-डाउन संस्करण का उपयोग करने की सलाह दूंगा।
ckjbgames

जवाबों:


4

व्हाट्सएप को कम करने के लिए फंक्शन पैरामीटर ऑर्डर करें

के बजाय

(defun f(a b)(...))
...
(f x(1+ y))

कुछ ऐसा प्रयास करें

(defun f(b a)(...))
...
(f(1+ y)x)

1

प्रिंटिंग स्ट्रिंग्स के माध्यम से कैपिटल अक्षरों से मिलकर प्रिंट स्ट्रिंग्स

princकॉमन लिस्प में समारोह कम है, और भागने characers बिना वस्तुओं प्रिंट होगा। यदि आप समान लिस्प प्रतीकों को मुद्रित करते हैं, जिसमें सिनैक्स है 'symbol-name, तो यह आपको उन उद्धरणों की आवश्यकता से बचाता है जो आप प्रिंट करना चाहते हैं, और व्हॉट्सएप पर भी सहेज सकते हैं। ध्यान दें कि जब प्रतीकों को मुद्रित किया जाता है, तो उन्हें कैपिटल किया जाएगा। इसके अलावा, यह एक नई पंक्ति या एक स्थान नहीं जोड़ता है, इसलिए आपको सहमति की आवश्यकता नहीं है।

उदाहरण के लिए,

(princ'hai)

छप जाएगा HAI

तथा

(princ'hai)(princ(read))

प्रिंट करेंगे HAI, इनपुट मांगेंगे, और उसका प्रिंट आउट ले सकते हैं, जैसे यदि आप हैलो टाइप करते हैं, तो परिणाम है

HAIhellohello

1

उपयोग 1+और 1-वेतन वृद्धि के लिए

के बजाय (+ a 1)या (- b 1)कोशिश (1+ a)या (1- b)


मुझे यह समझ में नहीं आता है। 1+दो टोकन के रूप में पार्स नहीं किया गया है, 1और +? मुझे लगा कि यह है +1
फल


मैंने सोचा था कि नाम अंकों से शुरू नहीं हो सकते हैं?
एगलैंगिंग फल

@EsolangingFruit इस है लिस्प ...
ASCII-केवल

1

का प्रयोग करें loopऔर formatहै, जो की तरह है printfस्टेरॉयड पर। formatइसमें पुनरावृत्ति और स्थितियां, साथ ही रोमन अंक, अंग्रेजी संख्या और अंग्रेजी प्लूरल शामिल हैं। यह बहुत, बहुत बदसूरत और बहुत कॉम्पैक्ट है।


1

सशर्त उत्पादन

जीएनयू कॉमन लिस्प

~v^

उतार-बाहर के निर्देश ~^सबसे अधिक आपरेशन स्वरूपण पिछले सूची आइटम के बाद समाप्त करने के लिए एक सूची में प्रयोग किया जाता है। हालांकि, इसका vउपयोग एक तर्क का उपभोग करने के लिए एक संशोधक के साथ भी किया जा सकता है, जिस स्थिति में यह समाप्त हो जाता है यदि वह तर्क शून्य है। यह विशेष रूप से उत्पादित शून्य से निपटने के लिए उपयोगी है dotimes

(loop as n from 1 to 10 do(format t"~d~%"n))

(dotimes(n 11)(if(> n 0)(format t"~d~%"n)))

(dotimes(n 11)(format t"~v^~d~%"n n))

format(condition)

पहला तर्क को formatसे एक हो सकता t, nilउर्फ (), या एक धारा। यदि पारित tहो जाता है stdout, तो nilयह आउटपुट के लिए होगा , अगर यह एक स्ट्रिंग के रूप में स्वरूपित आउटपुट लौटाएगा। यह सशर्त रूप से आउटपुट का उपयोग किया जा सकता है। उपरोक्त उदाहरण उतना ही छोटा लिखा जा सकता है:

(dotimes(n 11)(format(> n 0)"~d~%"n))

यदि कोई मूल्य आउटपुट था, तो रिटर्न वैल्यू होगी nil। इस वजह से, यह एक doलूप के लिए समाप्ति की स्थिति के रूप में भी इस्तेमाल किया जा सकता है :

(do((n 11))((<(decf n)1))(format t"~d~%"n))

(do((n 11))((format(>(decf n)0)"~d~%"n)))

~[...~]

सशर्त फॉर्मेटर तर्क का उपभोग करता है, और सूची द्वारा एक प्रारूपण स्ट्रिंग का चयन करता है। एक सामान्य उपयोग मामला ~:;शून्य के बीच चयन करने के लिए डिफ़ॉल्ट फ़ॉर्मैटर के साथ है न कि शून्य के बीच।

(dotimes(n 11)(format t"~v^~[~r~:;~d~]~%"n(mod n 3)n))

सशर्त फॉर्मेटर्स को भी नेस्टेड किया जा सकता है, इस स्थिति में प्रत्येक बदले में एक तर्क का उपभोग करेगा।


~&

ऊपर दिए गए प्रत्येक उदाहरण में, ~%एक नई रेखा का उत्सर्जन करने के लिए उपयोग किया जाता है। ज्यादातर मामलों में, यह एक शाब्दिक न्यूलाइन द्वारा प्रतिस्थापित किया जा सकता है। एक अन्य विकल्प का उपयोग करना है ~&, जो एक नई पंक्ति का उत्सर्जन करेगा यदि और केवल अगर आउटपुट कर्सर एक लाइन की शुरुआत में नहीं है, तो उर्फ ​​ए fresh-line

दोनों ~% और ~&यह भी एक साथ, एक तर्क ले जा सकते हैं vसंशोधक या एक निरंतर के रूप में, और कई नई-पंक्तियों के रूप में उत्पादन करेगा। वे दोनों भी खुशी से एक नकारात्मक तर्क को स्वीकार करेंगे, जिस स्थिति में वे कुछ भी नहीं उत्सर्जित करते हैं।


बाहरी संदर्भ

प्रैक्टिकल कॉमन लिस्प
18. कुछ कम व्यंजनों

आम लिस्प भाषा, दूसरा संस्करण
22.3.3। चरित्र धाराओं के लिए स्वरूपित आउटपुट

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.