एक खिंचाव वाला सांप कुछ इस तरह दिखता है:
<||=|||:)~
|
एक खिंचाव वाले सांप में ऊर्ध्वाधर सलाखों ( ) का प्रत्येक अलग क्रम , जिसे एक खिंचाव वाले हिस्से के रूप में जाना जाता है , व्यक्तिगत रूप से इसकी चौड़ाई के दोगुने तक बढ़ जाती है, और एक बार विस्तारित स्लैश ( /
, \
) के साथ खींचा जाता है ।
ऊपर विशेष सांप के दो ऐसे खिंचाव वाले हिस्से होते हैं, जो इसे चार संभव बनाते हैं:
<||=|||:)~
</\/\=|||:)~
<||=/\/\/\:)~
</\/\=/\/\/\:)~
कम से कम खिंचे हुए पोज़ में एक स्ट्रेपी स्नेक का सामान्य रूप इस रेगेक्स द्वारा परिभाषित किया गया है :
<(\|+=)*\|+:\)~
जिसे शब्दों में कहा जा सकता है:
<
, के दृश्यों के किसी भी संख्या के बाद|
's में शामिल हो गए के साथ=
संकेत, जिसके बाद:)~
।
तो <|:)~
और <||:)~
और <|=|:)~
और <|=|=||=|||||=||:)~
लचीला सांप हैं, लेकिन <=:)~
और <=|:)~
और <||=:)~
और <|==||:)~
नहीं कर रहे हैं।
स्ट्रेची सांपों को दाएं के बजाय बाएं का सामना करना पड़ सकता है, जैसे ~(:|||=||>
। रूप एक ही हैं, बस प्रतिबिंबित।
चुनौती
एक प्रोग्राम लिखें जो दो स्ट्रेची सांपों की एकल पंक्ति स्ट्रिंग में एक दूसरे का सामना कर रहे हों, बीच में कुछ संख्या में रिक्त स्थान के साथ। दोनों सांप अपने कम से कम फैला हुआ मुद्रा में होंगे (सभी ऊर्ध्वाधर पट्टियाँ, कोई स्लैश नहीं)। स्ट्रिंग दाएं-मुंह वाले सांप की पूंछ के साथ शुरू होगी और बाएं-मुंह वाले सांप की पूंछ के साथ समाप्त होगी (आप वैकल्पिक रूप से मान सकते हैं कि एक अनुगामी न्यूलाइन भी है)।
उदाहरण के लिए, यहां सांपों के बीच पांच स्थानों के साथ एक संभावित इनपुट है:
<|=||:)~.....~(:||||>
मैं .
स्पष्टता के लिए वास्तविक स्थान वर्णों के बजाय अवधियों ( ) का उपयोग कर रहा हूं ।
सांपों के बीच शून्य स्थान भी मान्य इनपुट है:
<|=||:)~~(:||||>
हम कहते हैं कि सांप रहे चुंबन जब अपनी जीभ को इस तरह छू रहे हैं।
आपका कार्यक्रम (ओवरलैपिंग के बिना) सांप इस तरह दोनों का लचीला भागों के कुछ संयोजन का विस्तार करने की सांप उन दोनों के बीच संभव रिक्त स्थान और उनमें कम है, जरूरत है यानी ऐसी है कि सांप संभव के रूप में चुंबन के रूप में करीब हैं ।
दोनों सांपों की पूंछ तय हो गई है, लेकिन उनके सिर और शरीर हिल सकते हैं - दाएं-मुंह वाले सांप के लिए दाएं, बाएं-बाएं सांप के लिए - क्या खिंचाव के हिस्सों को बढ़ाया गया है।
अपने कार्यक्रम के उत्पादन में एक पंक्ति स्ट्रिंग (प्लस वैकल्पिक अनुगामी newline) के रूप में, संभव के रूप में चुंबन कि बढ़ाया गया है लचीला भागों के लिए खड़ी सलाखों के स्थान पर तैयार की स्लैश बारी के साथ के पास सांप से पता चलता है।
उदाहरण के लिए, <|=||:)~.....~(:||||>
(ऊपर से) के लिए आउटपुट होगा:
</\=||:)~~(:/\/\/\/\>
यह वह जगह है ही यहाँ समाधान क्योंकि लचीला भागों बढ़ाया का कोई अन्य संयोजन के साथ, सांप या तो ओवरलैप या होगा आगे चुंबन से दूर।
यदि कई समाधान संभव हैं, तो आउटपुट उनमें से कोई भी हो सकता है।
उदाहरण के लिए, यदि इनपुट थे
<|=||:)~.....~(:|||=|>
आउटपुट हो सकता है
<|=/\/\:)~~(:/\/\/\=|>
या
</\=||:)~~(:/\/\/\=/\>
याद रखें कि यह हमेशा सांप को चूम बनाने के लिए संभव नहीं होगा, लेकिन आप अब भी अधिक से अधिक निकट लाने के लिए की जरूरत है।
उदाहरण के लिए, यदि इनपुट थे
<||=||||:)~...~(:||>
आउटपुट हो सकता है
</\/\=||||:)~.~(:||>
या
<||=||||:)~.~(:/\/\>
सांप को पहले से ही चुंबन रहे हैं, तो उत्पादन इनपुट के रूप में ही किया जाएगा। जैसे
<|=||:)~~(:||||>
सामान्य तौर पर, आउटपुट इनपुट के समान होगा यदि किसी भी खिंचाव वाले हिस्से का विस्तार सांपों को ओवरलैप कर देगा। जैसे
<|||=|||:)~..~(:||||=|||||=||||||>
टिप्पणियाँ
- स्टडिन या कमांड लाइन से इनपुट को हमेशा की तरह लेता है, या एक फ़ंक्शन लिखता है जो एक स्ट्रिंग लेता है। प्रिंट करें या आउटपुट वापस करें।
- यदि आप चाहें तो
.
रिक्त स्थान के स्थान पर इनपुट और आउटपुट में अवधि ( ) का उपयोग कर सकतेहैं।
- यह केवल महत्वपूर्ण है कि स्लैश वैकल्पिक पट्टियों के अनुक्रम के भीतर वैकल्पिक रूप से बदलते हैं। बड़े पैमाने पर साँप में उनका क्रम या आगे या पीछे की ओर स्लैश आता है, इससे कोई फर्क नहीं पड़ता।
- स्ट्रेच वाले भाग भाग का विस्तार नहीं कर सकते - यह बिल्कुल डबल है या बिल्कुल भी विस्तार नहीं है।
स्कोरिंग
यह कोड-गोल्फ है । बाइट्स में सबसे कम सबमिशन जीतता है। टाईब्रेकर पहले जवाब है।
>
नहीं होगा ) और , लेकिन वह यह भी कहता है कि "यह केवल महत्वपूर्ण है कि ऊर्ध्वाधर पट्टियों के अनुक्रम में स्लैश वैकल्पिक रूप से प्रतिस्थापित किए जाते हैं। उनका क्रम। बड़े पैमाने पर सांप या आगे या पीछे की ओर झपकी आना पहली बात नहीं है। " <
(
)