हाइफ़नेशन निकालें


15

एक नई चुनौती के लिए समय ! यह एक आम समस्या है जब विभिन्न दस्तावेज़ स्वरूपों के बीच कॉपी-पेस्टिंग: हाइफ़नेशन। हालांकि यह एक वाम-संरेखित लेआउट की रैगेडनेस को कम करता है या एक उचित लेआउट में रिक्ति को बढ़ाता है, यह एक पूर्ण दर्द है जब आपका पीडीएफ ठीक से निर्मित नहीं होता है और लेआउट में हाइफ़न को बनाए रखता है, जिससे आपके कॉपी किए गए पाठ को संपादित करना या रीफ़्लो करना मुश्किल हो जाता है।

सौभाग्य से, अगर हम अनगिनत स्व-सहायता पुस्तकों पर विश्वास करते हैं, तो कुछ भी समस्या नहीं है यदि आप इसे एक चुनौती के रूप में देखते हैं। मेरा मानना ​​है कि ये सेल्फ-हेल्प बुक्स बिना PPCG का जिक्र किए अपवाद हैं, जहां किसी भी समस्या को चुनौती के रूप में पेश किया जाएगा। आपका काम एक पाठ से अपमानजनक हाइफ़नेशन और लाइनब्रेक को दूर करना है, ताकि यह किसी भी पाठ संपादक में पेस्ट करने के लिए तैयार हो।

समस्या का विवरण

आप एक प्रोग्राम या फ़ंक्शन लिखेंगे जो लागू होने पर हाइफ़नेशन और लाइन-ब्रेक को हटा देता है। इनपुट पर एक स्ट्रिंग होगा stdin(या निकटतम वैकल्पिक) या एक समारोह इनपुट के रूप में। उत्पादन (पर stdoutया निकटतम विकल्प या समारोह उत्पादन) 'को सही' पाठ किया जाएगा। यह पाठ सीधे कॉपी-पेस्ट करने योग्य होना चाहिए । इसका मतलब यह है कि आउटपुट का अनुगमन या अनुगमन ठीक है, लेकिन अतिरिक्त आउटपुट आपके सही किए गए पाठ को आधा कर देता है (उदाहरण के लिए, प्रत्येक पंक्ति पर अग्रणी स्थान) नहीं

सबसे बुनियादी मामला निम्नलिखित है (ध्यान दें: कोई अनुगामी स्थान)

Lorem ipsum dolor sit amet, con-
sectetur adipiscing elit. Morbi
lacinia nisi sed mauris rhoncus.

प्राप्त करने के लिए अपमानजनक हाइफ़न और लाइनब्रेक को हटा दिया जाना चाहिए

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi lacinia nisi sed mauris rhoncus.

हालांकि, कुछ अपवादों को देखा जाना चाहिए।

  • डबल न्यूलाइन्स एक पैराग्राफ ब्रेक का संकेत देते हैं, और इसे बनाए रखा जाना चाहिए।
  • उचित संज्ञा और नाम कभी भी दो रेखाओं में नहीं टूटते हैं, जब तक कि उनमें पहले से ही एक हाइफ़न न हो (जैसे नवियर-स्टोक्स समीकरण)। लाइन-ब्रेक को हटा दिया जाना चाहिए, लेकिन हाइफ़न को बनाए रखा गया। इन मामलों की पहचान केवल पहले अक्षर को पूंजीकृत करके की जा सकती है।
  • कभी-कभी, एक हाइफ़न एक शब्द समूह (जैसे उन्नीसवीं और बीसवीं शताब्दी) को इंगित करता है। जब यह दो रेखाओं के पार होता है, तो इसे अगली पंक्ति में एक अग्रणी स्थान के साथ संकेत दिया जाता है।

एक उदाहरण: (इस उदाहरण में व्यक्त विचारों काल्पनिक हैं और जरूरी लेखक की दृष्टि का प्रतिनिधित्व नहीं करते; Runge-Kutta-Fehlberg विधि के विरोधियों समान रूप से कर रहे हैं इस चुनौती में भाग लेने के लिए स्वागत)

Differential equations can
be solved with the Runge-Kutta-
Fehlberg method.

Developed in the nineteenth-
 or twentieth century, this
method is completely FANTAS-
TIC.

हो जाएगा

Differential equations can be solved with the Runge-Kutta-Fehlberg method. 

Developed in the nineteenth- or twentieth century, this method is completely FANTASTIC. 

लाइनब्रेक \nया तो \r\nआपकी पसंद के आधार पर या ASCII कोड-पॉइंट हो सकता है , और हाइफ़न एक साधारण ASCII -(माइनस साइन) है। UTF-8 समर्थन की आवश्यकता नहीं है। यह चुनौती , इसलिए सबसे छोटा कोड जीतता है।

जवाबों:


9

रेटिना , 58 बाइट्स

(?<!\n)\n(?!\n)
<space>
- (?! |[A-Z][a-z])| (?= )|(?<=-) (?=[A-Z])
<empty>

<space>अपनी स्वयं की रेखा पर एक एकल स्थान का <empty>प्रतिनिधित्व करता है और एक खाली अनुरेखण रेखा का प्रतिनिधित्व करता है। गिनती के उद्देश्यों के लिए, प्रत्येक पंक्ति एक अलग फ़ाइल में जाती है और \nवास्तविक लाइनफ़ीड पात्रों के साथ बदल दी जाती है। सुविधा के लिए आप उपरोक्त सभी को एक ही फाइल में रख सकते हैं और इसे -sझंडे के साथ चला सकते हैं ।

मुझे पूरा यकीन है कि ऐसा करने का एक छोटा तरीका है, इसलिए मैं एक स्पष्टीकरण के साथ इंतजार करूंगा जब तक कि मैं गोल्फ नहीं कर लेता।


मैं वास्तव में रेटिना में इस से निपटना चाहता था, लेकिन मोनो के साथ खिलवाड़ नहीं करना चाहता था :(
orlp

2

जीएनयू सेड, 68

स्कोर में शामिल -zrविकल्पों के लिए +2 शामिल हैं sed

s/\n\n/:/g
s/-\n([A-Z][a-z])/-\1/g
s/-\n /- /g
s/-\n//g
y/\n:/ \n/

मान लेता है कि इनपुट स्ट्रीम में कोई :वर्ण नहीं है । यदि यह स्वीकार्य नहीं है, तो :कोड में सभी को कुछ अन्य गैर-मुद्रण योग्य ASCII वर्ण, जैसे 0x7 बीईएल के साथ बदल दिया जा सकता है।


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