पीपीसीजी के वरिष्ठ प्रैंक


19

हम जल्द ही एक पूर्ण साइट पर स्नातक कर रहे हैं, और स्नातक होने से पहले केवल एक ही चीज़ बची है: एक वरिष्ठ शरारत! मुझे लगता है कि हमें क्लासिक "पानी के कप के साथ एक दालान भरना" पर एक बदलाव करना चाहिए।

चुनौती

आपका कार्यक्रम पाठ और आउटपुट में पढ़ा जाएगा जो पाठ, पानी के ऊपर-नीचे कप में कवर किया गया है। पानी का एक उल्टा कप इस तरह दिखता है: /~\
इन कपों को केवल इनपुट में व्हाट्सएप में रखा जा सकता है, और केवल इतना रखा जा सकता है कि कप के सभी तीन पात्र सीधे एक गैर-व्हाट्सएप चरित्र के ऊपर हैं (अन्यथा पानी फैल जाएगा बाहर!)। कप को अन्य कपों के ऊपर नहीं रखा जा सकता है। कप को हर उपलब्ध उद्घाटन में रखा जाना चाहिए, और यह माना जाता है कि हर इनपुट व्हॉट्सएप के अनंत क्षेत्र से घिरा हुआ है।

आप मान सकते हैं कि इनपुट एक आयत के लिए रिक्त स्थान के साथ गद्देदार है।

हमें प्रैंक को जल्दी और बिना किसी को ध्यान दिए खींचने की आवश्यकता है, इसलिए प्रत्येक भाषा में सबसे कम बाइट्स जीतता है।

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

इनपुट:

     ____________________________________________
    /   ___    /   ___    /   ______/   ________/
   /   /__/   /   /__/   /   /     /   /_______
  /   _______/   _______/   /     /   //__    /
 /   /      /   /      /   /_____/   /___/   /
/___/      /___/      /_________/___________/

आउटपुट:

     /~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\
     ____________________________________________
    /   ___    /   ___    /   ______/   ________/
   /   /__//~\/   /__//~\/   /     /   /_______
  /   _______/   _______/   //~\  /   //__    /
 //~\/      //~\/      //~\/_____//~\/___//~\/
/___/      /___/      /_________/___________/

इनपुट:

 L
LOL  ROFL:ROFL:LOL:ROFL:ROFL
 L\\        ____I____
    ========    |  |[\
            \___O==___)
            ___I_I__/

आउटपुट:

 L   /~\/~\/~\/~\/~\/~\/~\
LOL  ROFL:ROFL:LOL:ROFL:ROFL
 L\\/~\/~\  ____I____
    ========/~\ |  |[\
            \___O==___)
            ___I_I__/

1
यह उन 2D पैटर्न मिलान भाषाओं में से कुछ को पुनर्जीवित करने का समय हो सकता है ...
mbomb007

जवाबों:


10

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

बाइट गिनती आईएसओ 8859-1 एन्कोडिंग मानती है।

(?<=(.)*)(?=.*¶(?>(?<-1>.)*)\S{3})   
/~\

ध्यान दें कि पहली पंक्ति में तीन अनुगामी स्थान हैं।

इनपुट को एक आयत में गद्देदार करने की आवश्यकता होती है।

इसे ऑनलाइन आज़माएं!

व्याख्या

यह काफी मानक ऊर्ध्वाधर मिलान है:

(?<=(.)*)

इस समूह में कई पात्रों को कैप्चर करके मैच से पहले के पात्रों को गिना जाता है 1

(?=.*¶(?>(?<-1>.)*)\S{3})

यह जाँचता है कि अगली पंक्ति में एक ही स्थान पर तीन गैर-अंतरिक्ष वर्ण हैं। ऐसा 1तब तक समूह से पॉपिंग करके किया जाता है जब तक कि यह खाली न हो जाए (?<-1>.)*और परमाणु समूह के साथ पीछे न हट जाए (?>...)

अंत में हम वास्तविक स्थानों से मेल खाते हैं। वे बस शाब्दिक स्ट्रिंग के साथ बदल रहे हैं /~\। आसानी से, मैच बाएं से दाएं पाए जाते हैं और ओवरलैप नहीं हो सकते।


3

जावास्क्रिप्ट (ईएस 6), 163 बाइट्स

a=>(z=a.split`
`,z.unshift(z[0].replace(/./g,' ')),z).map((b,i)=>b.replace(/   /g, (c,j)=>(!z[i+1]||!z[i+1][j+2]||/ /.test(z[i+1].slice(j,j+3))?c:'/~\\'))).join`
`

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


मुझे लगता है कि यह गलत आउटपुट देता है a test
नील

1

जावास्क्रिप्ट (ईएस 6), 109 बाइट्स

s=>s.replace(/.*\n/,m=>(t=m).replace(/./g,' ')+m).replace(eval(`/   (?=[^]{${t.length-3}}[^ ]{3})/g`),"/~\\")

आयताकार इनपुट की आवश्यकता होने के साथ-साथ यह भी माना जाता है कि पहली पंक्ति एक नई रेखा के साथ समाप्त होती है, भले ही यह इनपुट की एक ही पंक्ति हो। यह सुनिश्चित करने के लिए एक गतिशील रूप से उत्पन्न लुकहेड का उपयोग करता है कि यह तीन रिक्त स्थान "ऊपर" तीन गैर-रिक्त स्थान पाता है, ताकि छेद से भ्रमित न हों।

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