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


11

निम में गोल्फिंग के लिए आपके पास क्या सामान्य सुझाव हैं ? मैं उन विचारों की तलाश कर रहा हूं, जिन्हें कोड-गोल्फ समस्याओं पर लागू किया जा सकता है और जो निम से कम से कम कुछ विशिष्ट हैं (उदाहरण के लिए "टिप्पणियां हटाएं" एक उत्तर नहीं है)।

कृपया प्रति उत्तर एक टिप पोस्ट करें।

जवाबों:


7

लचीली कॉल सिंटैक्स

निम सुंदर लचीला है जब यह फ़ंक्शन कॉल सिंटैक्स की बात आती है। उदाहरण के लिए, किसी फ़ंक्शन को एक तर्क के साथ कॉल करने के कुछ तरीके यहां दिए गए हैं:

ord(c)
ord c
c.ord

और दो तर्कों के साथ एक फ़ंक्शन को कॉल करने के तरीके:

max(a,b)
a.max(b)
a.max b

गोल्फ संस्करण चुनें जो आपकी स्थिति के लिए सही काम करता है, विशेष रूप से पूर्वता के बारे में। उदाहरण के लिए, तुलना करें:

abs(n)+2
n.abs+2
(abs n)+2

विरोध के रूप में:

abs(n+2)
(n+2).abs
abs n+2

ध्यान दें कि max a,bयहां तक कि काम करता है (कभी-कभी)।
तांबे का

7

futureमॉड्यूल का उपयोग करें

futureLambdas और सूची comprehensions: मॉड्यूल दो मुख्य बाइट-बचाने वाली सुविधाओं में शामिल है। लैम्ब्डा अत्यंत उपयोगी हैं।

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

proc f(s:any):any=s&", world!"

इसे छोटा किया जा सकता है:

import future
s=>s&", world!"

जो एक बाइट बचाता है। ध्यान दें, हालाँकि, लैम्बदास का उपयोग किसी पैरामीटर सूची के बाहर नहीं किया जा सकता है - इसलिए अपने कोड का परीक्षण करने के लिए, आपको कुछ इस तरह करना होगा:

import future
proc test(f: string -> string) = echo f "Hello"
test(s=>s&", world!")

साथ ही, सूची की समझ को futureमॉड्यूल के साथ उपयोग किया जा सकता है । उदाहरण के लिए, यह कोड @[...]4 से 100 विभाज्य से कम सभी वर्गों के seq ( ) प्रिंट करता है :

import future
echo lc[x*x|(x<-1..9,x*x mod 4==0),int]

एक तुलनात्मक तुलना के लिए यह ध्यान दिया जाना चाहिए कि आप anyइसके बजाय कभी-कभी उपयोग कर सकते हैं string(मैं मान रहा हूं कि आपने सबसे लंबे प्रकार का नाम चुना है), लेकिन यह अभी भी परवाह किए बिना बचाता है।
Sp3000

@ Sp3000 मुझे नहीं पता था कि आप उपयोग कर सकते हैं any, टिप के लिए धन्यवाद! आपको उत्तर के रूप में पोस्ट करना चाहिए।
कॉपर

एक और बेहतर तुलना के लिए, आप कर सकते हैं proc(s:any):any=s&", world!", <space>fएक गुमनाम के लिए छोड़नेproc
Sp3000

6

निरुपित संचालक

जब गैर-पूर्णांक के साथ काम करते हैं, तो कभी-कभी अहस्ताक्षरित ऑपरेटरों का उपयोग करना बेहतर होता है। विशेष रूप से, यदि संभव हो, का उपयोग करें /%और %%इसके बजाय divऔर mod

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