बड़ा, बेहतर (टूटा हुआ) जिपर


9

( इस चुनौती से काफी प्रेरित )

मूल चुनौती में आप एक क्षैतिज जिपर बनाने के लिए थे, हालांकि, मेरे हूडि को नीचे देखते हुए, मेरी ज़िप बहुत अधिक ऊर्ध्वाधर है (और थोड़ा टूटी हुई): पी

इनपुट

आपको किसी भी प्रारूप में एक स्ट्रिंग ( s), और पूर्णांक ( aऔर b) की एक जोड़ी दी जाएगी । कहाँ पे:

a < (length-of-s / 2)

b <= ((length-of-s / 2) - (a + 1)) / 6

आउटपुट और स्कोरिंग

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

["f     r"],["u     e"],["l     p"],["l     p"],["y     i"],[" o   z "],["  p n  "],["   e   "]

या

"f     r\nu     e\nl     p\nl     p\ny     i\n o   z \n  p n  \n   e   "

टेस्ट केस 1 के लिए स्वीकार्य आउटपुट हैं

स्टैंडर्ड लूपोल्स को निषिद्ध किया गया है और बाइट्स जीत में सबसे छोटा कोड है। बिना स्पष्टीकरण के कोई भी उत्तर जीतने में सक्षम नहीं होगा।

व्याख्या

जिपर बनाने के लिए आपको पहले किसी भी व्हाट्सएप या न्यूलाइन वर्ण को स्ट्रिंग से निकालना होगा। और फिर इसे आधा में मोड़ो जैसे कि (अधिक के लिए परीक्षण केस 1 देखें)

abcde fgh ij klmnopqr नीचे दो तार बन जाते हैं, दूसरी छमाही को उल्टा नोटिस करें।

abcdefghi तथा rqponmlkj

फिर प्रत्येक स्ट्रिंग की शुरुआत में हम एक ही अनुक्रमित वर्ण को प्रत्येक स्थान से एक स्थान पर एक स्थानापन्न वर्ण के साथ रखते हैं, जो निम्न प्रकार से निर्धारित होता है:

[0] a     r -- (a-3) five spaces
[1]  b   q  -- (a-2) three spaces
[2]   c p   -- (a-1) one space
[3]    d    -- (a)
[4]    o
[5]    e
[6]    n
etc...

जो हमारे जिपर के लिए आधार बनाता है। अब पूर्णांक aऔर b

aहमारे ज़िप का स्थान है। यह निर्धारित करने के लिए कि ज़िप कहां स्थित है हम अपने आउटपुट लाइनों के सूचकांक का उपयोग अपने ज़िप को बंद करने के बिंदु के रूप में करते हैं। उदाहरण के लिए [3]मेरे उपरोक्त उदाहरण में वर्ग कोष्ठक है जहाँ ज़िप है।

हमारे जिपर के करीब पहुंचने से पहले, उपरोक्त जिपर को पांच स्थान के अंतराल पर रहना चाहिए, जब तक a-2कि वह उस स्थान पर न पहुंच जाए जहां वह 3 स्थानों पर बंद हो जाता है और a-1जहां वह 1 स्थान पर बंद हो जाता है। केवल स्पष्ट होने के लिए, उपरोक्त उदाहरण में a = 3(0-अनुक्रमित)


bमेरे जिपर में छेद की संख्या है। ज़िप में एक छेद बनाने के लिए, हम कुछ रिक्ति के साथ फिर से स्ट्रिंग को विभाजित करते हैं।

उदाहरण छेद के सूचकांक के साथ शुरू करने के रूप में hहम h-1एक स्थान के अंतर को बढ़ाते हैं , h3 रिक्त स्थान और h+1एक स्थान पर वापस, छोड़ते हैं h-2और h+2प्रति पंक्ति में केवल एक वर्ण के साथ , क्योंकि वे छेद के हिस्से के रूप में गिने जाते हैं।

ज़िप के बाद और प्रत्येक छेद के बीच में एक वर्ण का अंतर होना चाहिए ताकि हमारा ज़िप छेद के बीच पूरी तरह से जुड़ा हुआ दिखे।

आपको छिद्रों की अनुक्रमणिका चुनने के लिए मिलता है, लेकिन वे सभी जिपर के 'बंद' खंड के भीतर मौजूद होना चाहिए।

Again using 'abcdefghi' and 'rqponmlkj'

[0] a     r -- (open)
[1]  b   q  -- (closing)
[2]   c p   -- (closing)
[3]    d    -- zip 
[4]    o    -- gap
[5]    e    -- start of hole  (h-2)
[6]   n f   -- one space      (h-1)
[7]  m   g  -- three spaces   (hole h)
[8]   l h   -- one space      (h+1)
[9]    k    -- end of hole    (h+2)
[10]   i    -- gap
[11]   j

मुझे उम्मीद है कि सब समझ में आता है, अगर दूर नहीं पूछें। प्रश्नों की प्रत्याशा में, आप देख सकते हैं कि pमेरे दूसरे उदाहरण में चरित्र दूसरे विकल्प में मौजूद है, हालांकि, इसकी लाइन की शुरुआत में दिखाई देता है, यह इरादा है, आपको 1-2-1-2 के अनुक्रम का पालन करना होगा- 1-2, आउटपुट में इसकी स्थिति की परवाह किए बिना प्रत्येक आधे-बारी से एक चरित्र ले रहा है।

परीक्षण के मामलों

"fully open zipper", 7, 0                     | "fully closed zipper", 0, 0
fullyope reppizn                              | fullyclos reppizde
                                              |
f     r   *Note: i particularly like this     | f
u     e     example as it shows the reversing | r
l     p     of the second half of the string  | u
l     p     causes the words to wrap from top | e
y     i     left to the  bottom and back up   | l
 o   z      the right side                    | p
  p n                                         | l
   e                                          | p
                                              | y
                                              | i
                                              | c
                                              | z
                                              | l
                                              | d
                                              | o
                                              | e
                                              | s
  • कॉलम 1: "मूर्खतापूर्ण लंबे अटूट जिपर जो किसी भी सभ्य हुडी पर मौजूद नहीं होने चाहिए", 24, 0
  • कॉलम 2: "लोरेम इप्सम डोलर अमेट, कंसेटेटुर एडिपिसिंग एलीट। मौरिस फौसीबस मोलेस्टी मील। अलिकम नेक फ्रिंजिला इप्सम", 15, 5

:

s     e          |          L     m
t     i          |          o     u
u     d          |          r     s
p     o          |          e     p
i     o          |          m     i
d     h          |          i     a
l     t          |          p     l
y     n          |          s     l
l     e          |          u     i
o     c          |          m     g
n     e          |          d     n
g     d          |          o     i
u     y          |          l     r
n     n          |           o   f
b     a          |            r c
r     n          |             s
o     o          |             e
k     t          |             i
e     s          |            n t
n     i          |           m   a
z     x          |            a m
i     e          |             u
 p   t           |             e
  p n            |             q
   e             |             t
   d             |             i
   r             |             ,
   l             |            l c
   t             |           A   o
   u             |            . n
   h             |             i
   o             |             s
   a             |             m
   h             |            e e
   t             |           c   i
   s             |            t t
                 |             e
                 |             s
                 |             t
                 |             s
                 |             u
                 |             l
                 |             r
                 |             o
                 |             a
                 |             m
                 |             d
                 |             s
                 |             i
                 |             u
                 |             p
                 |            b i
                 |           i   s
                 |            c c
                 |             u
                 |             i
                 |             a
                 |             n
                 |             f
                 |             g
                 |             s
                 |             e
                 |             i
                 |            l r
                 |           i   u
                 |            t a
                 |             .
                 |             M

संपादित करें: परीक्षण मामले जोड़े गए

"abcde fgh ij klmnopqr","3","1"

a     r
 b   q
  c p
   d
   o
   e
  n f
 m   g
  l h
   k
   i
   j

1
मुझे लगता है कि मुझे यह चुनौती पसंद है लेकिन मैंने इसे तीन बार पढ़ा है और मैं अभी भी 100% नहीं हूं कि मैं क्या करने वाला हूं। मुझे लगता है कि यह पूर्ण पैराग्राफ के बजाय नियमों और चश्मा को कम और स्पष्ट करने के लायक होगा।
TheLethalCoder

मैं इसे एक बार दे सकता हूं: पी
मिस्टिकविगाबॉन्ड

कोई स्पष्ट @ द लीथलकोडर
मिस्टिकविगाबॉन्ड

नमस्ते, मैंने प्रिंट करने योग्य-एएससीआई टैग को हटा दिया , क्योंकि इसका उपयोग आउटपुट लेआउट के बजाय प्रतिबंधित-स्रोत चुनौतियों के लिए किया जाता है।
AdmBorkBork

मैंने देखा कि धन्यवाद @AdmBorkBork मैंने फिर से वर्णानुक्रम को संपादित करने के लिए स्पष्टीकरण को उम्मीद से स्पष्ट किया कि यह देखने के लिए कि पात्र कहां से आ रहे हैं।
मिस्टिकवगाबॉन्ड

जवाबों:


1

PHP 7.1, 421 412 218 195 192 191 195 बाइट्स

for([,$s,$a,$b]=$argv;$i-$k<strlen($s=strtr($s,[" "=>""]));$p=0)for($t=++$y>$a-2?$y>=$a?$y>$a?$b-->0?_4_4_4_31_23_31:_4:_31:_23:_15;$c=$t[$p++];)echo$c<_?str_pad("",$c).$s[++$f&1?$i++:$k-=1]:"
";

इसे ऑनलाइन चलाएं -nrया इसके लिए प्रयास करें
प्रिंट करता है एक अग्रणी, लेकिन प्रत्येक पंक्ति में कोई अनुगामी न्यूलाइन और एक अग्रणी स्थान नहीं।


TIO मुझे यह त्रुटि देता है:<br /> <b>Parse error</b>: syntax error, unexpected ',', expecting ']' in <b>[...][...]</b> on line <b>7</b><br />
MysticVagabond

@Xynos PHP संस्करण को 7.1
टाइटस

आपका उत्तर छेद को जिप के बहुत करीब रखता है, बीमार आपके इनपुट के लिए सही आउटपुट को एक टेस्ट केस के रूप में
जोड़ता है

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