प्रसंग के साथ तार
इस चुनौती के प्रयोजनों के लिए, संदर्भ के साथ एक स्ट्रिंग तार का एक ट्रिपल है, जिसे बाएं संदर्भ , डेटा भाग और सही संदर्भ कहा जाता है । यह एक लंबी स्ट्रिंग के एक विकल्प का प्रतिनिधित्व करता है। हम ऊर्ध्वाधर पाइप |को विभाजक के रूप में उपयोग करते हैं , इसलिए संदर्भ के साथ एक स्ट्रिंग का एक उदाहरण है cod|e-go|lf, जहां बाएं संदर्भ है cod, डेटा है e-go, और सही संदर्भ है lf। यह उदाहरण के विकल्प का प्रतिनिधित्व करता e-goहै code-golf।
अब, संदर्भ के साथ दो तारों को संक्षिप्त करने के लिए, हम निम्नानुसार, उदाहरण के रूप में aa|bcc|deeऔर आगे बढ़ते cc|de|eeeहैं। हम स्ट्रिंग्स को आरेख के रूप में संरेखित करते हैं
a a|b c c|d e e
c c|d e|e e e
ताकि उनके डेटा भाग आसन्न हों। इस मामले में, डेटा भाग का डेटा भाग का भाग है bccde। बाएं संदर्भ वह हिस्सा है जो इस मामले में, पहले डेटा भाग के बाईं ओर के पंखों का विस्तार करता है aa। इसी तरह, सही संदर्भ है eee, इसलिए संदर्भ के साथ संयोजन स्ट्रिंग है aa|bccde|eee। एक दूसरे उदाहरण के लिए, विचार करें a|bb|cdऔर aabb|cd|, जहां दूसरे शब्द का खाली सही संदर्भ है। संरेखण आरेख है
a|b b|c d
a a b b|c d|
जहाँ दूसरे शब्द का बायाँ संदर्भ पहले की तुलना में अधिक विस्तृत है। संघात है aa|bbcd|।
लेकिन रुको, वहाँ एक गोत्र है: यदि संरेखण आरेख के अक्षर मेल नहीं खाते हैं, तो संघनन मौजूद नहीं है! एक उदाहरण के रूप में, का आरेख aa|bb|ccऔर c|c|cहै
a a|b b|c c
c|c|c
जहां bऔर cचौथे स्तंभ पर असहमत हैं, इसलिए उन्हें सहमति नहीं दी जा सकती है।
काम
आपका काम एक ऐसा प्रोग्राम लिखना है जो दो स्ट्रिंग्स में संदर्भ के साथ लेता है, जिनके हिस्से |ऊपर से अलग हो जाते हैं , और अगर यह मौजूद है, तो उनके कॉन्सेप्टेशन को आउटपुट करता है, और अगर नहीं तो कुछ और। "कुछ और" कोई भी मूल्य हो सकता है, जिसमें कोई आउटपुट नहीं है, जब तक कि यह संदर्भ के साथ एक वैध स्ट्रिंग नहीं है, और यह सभी मामलों में समान है। हालांकि, एक त्रुटि फेंकना स्वीकार्य नहीं है। आप या तो एक STDIN-to-STDOUT कार्यक्रम या एक फ़ंक्शन दे सकते हैं, और अनाम फ़ंक्शन भी स्वीकार किए जाते हैं। सबसे छोटी बाइट गिनती जीतती है, और मानक खामियों को रोक दिया जाता है।
परीक्षण के मामलों
aa|bcc|dee cc|de|eee -> aa|bccde|eee
a|bb|cd aabb|cd| -> aa|bbcd|
a|b|cccd aab|cc|c -> aa|bcc|cd
a|b|c b||cd -> a|b|cd
aa|bb|cc c|c|c -> None
aaa|b|c abb|cd|d -> None
|bb|cd abb|c|ed -> None
a|b|c a||cd -> None
|1<2=""की परिभाषा में&इसे जोड़ना चाहिए। मुझे खेद है कि मैंने ऐनक में इसे अधिक स्पष्ट रूप से निर्दिष्ट नहीं किया है, मैं इसे संपादित करूँगा।