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


10

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

संदर्भ के लिए, ऑनलाइन कंपाइलर यहां है

@ Sp3000 ने बताया कि रेगेक्स गोल्फ के लिए टिप्स भी हैं । यहां उत्तर विशेष रूप से रेटिना सुविधाओं पर केंद्रित होना चाहिए और सामान्य रेगेक्स गोल्फिंग युक्तियों पर नहीं।



हम्म, मैंने इसे पोस्ट करना बंद कर दिया है क्योंकि रेटिना अभी भी विकास में है और मुझे डर था कि ज्यादातर जवाब सादे रेगेक्स गोल्फिंग टिप्स होंगे, जो रेटिना के लिए बहुत विशिष्ट नहीं हैं। लेकिन हम इसे भी दे सकते हैं, मुझे लगता है ... :)
मार्टिन एंडर

@ मार्टिनबटनर आपने और कुछ अन्य लोगों ने मुझे बहुत अच्छे सुझाव और संकेत दिए हैं, जब से मैंने रेटिना को देखना शुरू किया है, तो मुझे लगता है कि इसके लिए शायद इसके बारे में समय है। मैंने एक स्पष्टीकरण जोड़ा कि सामान्य रेगेक्स युक्तियों को लिंक किए गए प्रश्न पर जाना चाहिए।
डिजिटल ट्रामा

1
@ MartinBüttner यहाँ किसी भी पूछने के लिए उतना ही अच्छा स्थान है - मैं थोड़ी देर के लिए सोच रहा था - जिज्ञासा से बाहर "रेटिना" नाम के लिए प्रेरणा क्या है? मुझे लगता है कि "रे" भाग नियमित अभिव्यक्ति के लिए है, लेकिन "टीना" के बारे में क्या?
डिजिटल ट्रामा

3
@DigitalTrauma मैं एक अच्छे शब्द के साथ आने की कोशिश कर रहा था जो एक संक्षिप्त रूप में काम करेगा, लेकिन असफल रहा। शब्द "रेटिना" कुछ प्रयासों के काफी करीब था, और मुझे यह शब्द पसंद आया। मैं इसे एक संक्षिप्त में फिर से शामिल करने में कामयाब नहीं हुआ और उसके बाद से इसे छोड़ दिया। तो हाँ "पुनः" "नियमित अभिव्यक्तियों" और शायद "n" के लिए ".NET" की तरह है, लेकिन अंततः यह सिर्फ एक शब्द है जो अच्छा लग रहा था।
मार्टिन एंडर

जवाबों:


3

यदि संभव हो तो छोरों को मिलाएं

गैर-तुच्छ संगणनाओं में, आप अक्सर डेटा को संसाधित करने के लिए कई छोरों का उपयोग करके खुद को पाएंगे:

+`stage1
+`stage2
+`stage3

इसलिए यह stage1तब तक चलता है जब तक कि आउटपुट परिवर्तित नहीं हो जाता है, तब stage2तक आउटपुट परिवर्तित हो जाता है और तब stage3तक आउटपुट परिवर्तित नहीं हो जाता है।

हालांकि, यह हमेशा चरणों की विस्तार से जांच करने के लायक है। कभी-कभी इसके stage1, stage2, stage3, stage1, stage2, stage3, ...बजाय लूप को एक इंटरलेयर्ड फैशन में चलाना संभव है (यह बहुत कुछ इस पर निर्भर करता है कि वास्तव में चरण क्या करते हैं, लेकिन कभी-कभी वे पूरी तरह से ऑर्थोगोनल परिवर्तन करते हैं या एक पाइपलाइन के रूप में अच्छी तरह से काम करते हैं)। इस मामले में आप बाइट्स को एक लूप में लपेटकर बचा सकते हैं:

{`stage1
stage2
}`stage3

यदि stage1पहला चरण है या stage3कार्यक्रम का अंतिम चरण है, तो आप उन कोष्ठकों पर भी छोड़ सकते हैं (जिसका अर्थ है कि यह पहले से ही दो चरणों के लूप के लिए बाइट्स को बचा सकता है)।

इस उत्तर में हाल ही में इस तकनीक का उपयोग देखा जा सकता है


2

बराबर लंबाई के टुकड़ों में बंटवारे n

जैसा कि अधिकांश "सामान्य" भाषाओं में TMTOWTDI (इसे करने का एक से अधिक तरीका है)। मैं यहाँ मान रहा हूँ कि इनपुट में लाइनफ़ीड नहीं है, और यह कि "विभाजन" का अर्थ है इसे लाइनों में विभाजित करना। लेकिन दो अलग-अलग लक्ष्य हैं: यदि स्ट्रिंग की लंबाई कई हिस्सा नहीं है, तो क्या आप अपूर्ण अनुगामी चंक को रखना चाहते हैं या आप इसे छोड़ना चाहते हैं?

अधूरी अनुगामी चुस्कियाँ लेते रहे

सामान्य तौर पर, रेटिना में विभाजन के बारे में जाने के तीन तरीके हैं। मैं तीनों दृष्टिकोणों को यहाँ प्रस्तुत कर रहा हूँ, क्योंकि जब आप उन्हें संबंधित समस्या के अनुकूल बनाने का प्रयास करते हैं तो वे बहुत बड़ा बदलाव ला सकते हैं। आप एक प्रतिस्थापन का उपयोग कर सकते हैं और प्रत्येक मैच के लिए एक लाइनफेड जोड़ सकते हैं:

.{n}
$&¶

यह 8 बाइट्स (या थोड़ा कम है अगर n = 2या n = 3फिर तब आप उपयोग कर सकते हैं ..या ...क्रमशः)। यह एक अतिरिक्त linefeed संलग्न कर देता है, तो स्ट्रिंग लंबाई: हालांकि यह एक मुद्दा है है हिस्सा लंबाई की एक बहु।

आप एक स्प्लिट स्टेज का भी उपयोग कर सकते हैं, और इस तथ्य का उपयोग कर सकते हैं कि स्प्लिट्स में कैप्चर बरकरार रहे:

S_`(.{n})

_विकल्प खाली लाइनों है कि अन्यथा मैचों के साथ पूरे स्ट्रिंग को कवर से परिणाम होगा निकाल देता है। यह 9 बाइट्स है, लेकिन यह एक ट्रेलिंग लाइनफ़ीड नहीं जोड़ता है। इसके लिए n = 38 बाइट्स और इसके लिए n = 27 बाइट्स हैं। ध्यान दें कि आप कुल मिलाकर एक बाइट बचा सकते हैं यदि खाली रेखाएं मायने नहीं रखती हैं (जैसे कि क्योंकि आप केवल गैर-रिक्त लाइनों को संसाधित करेंगे और बाद में लाइनफीड से छुटकारा पा सकते हैं): तो आप निकाल सकते हैं _

तीसरा विकल्प एक मैच का उपयोग करना है। !विकल्प के साथ हम सभी मैचों को प्रिंट कर सकते हैं। हालाँकि, अनुगामी भाग को शामिल करने के लिए, हमें एक चर मिलान लंबाई की अनुमति देने की आवश्यकता है:

M!`.{1,n}

यह भी 9 बाइट्स है, और एक अनुगामी लाइनफीड भी शामिल नहीं होगी। यह भी के लिए 8 बाइट्स हो जाता है n = 3ऐसा करने से ..?.?। हालाँकि ध्यान दें कि यह 6 बाइट्स के लिए कम हो जाता है n = 2क्योंकि अब हमें केवल आवश्यकता है ..?। यह भी ध्यान दें कि Mगिराया जा सकता है यदि यह आपके कार्यक्रम का अंतिम चरण है, तो किसी भी मामले में एक बाइट की बचत होगी।

अधूरी अनुगामी चुस्कियों का निर्वहन

यह वास्तव में लंबा हो जाता है यदि आप इसे प्रतिस्थापन के साथ करने की कोशिश करते हैं, क्योंकि आपको अनुगामी चंक को कुछ भी नहीं बदलने की आवश्यकता है (यदि यह मौजूद है) और एक विभाजन के साथ भी। इसलिए हम उन लोगों को सुरक्षित रूप से अनदेखा कर सकते हैं। दिलचस्प है, मैच दृष्टिकोण के लिए यह विपरीत है: यह छोटा हो जाता है:

M!`.{n}

यही कारण है कि 7 बाइट्स, या के लिए कम है n = 2, n = 3। फिर से, ध्यान दें कि आप Mकोड में अंतिम चरण होने पर इसे छोड़ सकते हैं ।

यदि आप एक अनुगामी लाइनफीड यहाँ चाहते हैं, तो आप |$regex में संलग्न करके प्राप्त कर सकते हैं ।

बोनस: ओवरलैपिंग विखंडू

याद रखें कि Mहै &विकल्प जो ओवरलैपिंग मैचों (जो आम तौर regex के साथ संभव नहीं है) देता है। यह आपको दी गई लंबाई के तार के सभी अतिव्यापी विखंडू (सबस्ट्रिंग) प्राप्त करने की अनुमति देता है:

M!&`.{n}

यह किसी भी तरह से एक स्ट्रिंग को विभाजित करने के लिए संभव है बिल्कुल वैरिएबल लंबाई के साथ आधा में? तो 123456बन जाता है 123\n456और 1234567890बन जाता है 12345\n67890?
केविन क्रूज़सेन

1
@KevinCruijssen मुझे नहीं लगता कि मैंने इसके लिए कोई विशेष सुविधा जोड़ी है। आपको शायद संतुलित समूहों का उपयोग करना होगा : tio.run/##K0otycxLNPyvquGe8D/YIEHD3sZWQ09TW1PD1PD3hbI1jW03JUNP//… यदि आपके पास एक अनुगामी लाइनफ़ीड नहीं है, तो आप इसे छोड़ सकते हैं ?=
मार्टिन एंडर

मैं चुनौती को पूरा करने में सक्षम था जहाँ मुझे लगा कि मुझे इसकी अलग तरह से ज़रूरत है, लेकिन संतुलन करने वाले समूह वास्तव में बहुत उपयोगी हैं! मुझे पता था कि यह उन लाइनों के साथ कुछ होना था, लेकिन मेरे रेगेक्स / रेटिना कौशल लगभग अच्छे नहीं हैं। जवाब के लिए धन्यवाद! :)
केविन क्रूज़सेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.