अक्षरों को जोड़ना


23

आपको एक प्रोग्राम या फ़ंक्शन लिखना चाहिए जो एक स्ट्रिंग के रूप में प्रतिनिधित्व किए गए वर्णों का एक ब्लॉक प्राप्त करता है और आउटपुट या एक समान स्ट्रिंग लौटाता है जिसमें वर्णमाला में आसन्न अक्षर जुड़े होते हैं।

एक दृश्य उदाहरण (के रूप में input => output):

b     d               b     d        
                      |\   /|        
                      | \ / |        
             =>       |  X  |        
                      | / \ |        
      e               |/   \e        
c     a               c     a        

विवरण

  • इनपुट एक स्ट्रिंग होगा जिसमें रिक्त स्थान, न्यूलाइन्स होंगे और पहले Nलोअरकेस अक्षरों में से प्रत्येक के बिल्कुल एक होंगे ।1 <= N <= 26
  • इनपुट की पंक्तियों को पूर्ण आयताकार ब्लॉक बनाने वाले रिक्त स्थान के साथ गद्देदार किया जाएगा।
  • वर्णमाला में आसन्न अक्षरों का प्रत्येक युग्म एक ही पंक्ति, स्तंभ या विकर्ण रेखा पर होगा और इसका उपयोग करते हुए एक सीधी असिसी रेखा के साथ जोड़ा जाना चाहिए \ / | or -। (लाइन की लंबाई 0. हो सकती है)
  • दो प्रकार के ओवरलैप के निम्नलिखित प्रकारों को संभाला जाना चाहिए:

    / and \ become X
    | and - become +
    / and / become /
    \ and \ become \
    | and | become |
    - and - become -
    [letter] and [anything] become [letter]
    
  • किसी अन्य प्रकार की दो-लाइन ओवरलैप नहीं होगी।

  • यदि दो से अधिक लाइनें ओवरलैप होती हैं, तो उनमें से किसी भी जोड़ी को वैध ओवरलैप्स में से एक होने की गारंटी होगी। (जैसे [letter] / |ट्रिपल कभी नहीं होगा)
  • \ / | - X and +इनपुट और आउटपुट में रिक्त स्थान बदलने के अलावा समान होना चाहिए।
  • अनुगामी न्यूलाइन वैकल्पिक है लेकिन इनपुट और आउटपुट के लिए समान होना चाहिए।
  • यह कोड-गोल्फ है इसलिए सबसे छोटी प्रविष्टि जीतती है।

उदाहरण

इनपुट:

b     d        


     h   gi    

      e  f     
c     a        

आउटपुट:

b     d        
|\   /|        
| \ / |        
|  X h+--gi    
| / \ |  |     
|/   \e--f     
c     a        

इनपुट:

     dk    j   

 b    l        

 c   fg        

     a    m    

   i      h    
     e         

आउटपुट:

     dk----j   
    /||   /    
 b / |l  /     
 |X  | \/      
 c \ fg/\      
    \|/\ \     
     a  \ m    
    /|   \     
   i-+----h    
     e         

इनपुट:

   eti  sqjh k  p  u  cfm vb owgzyx rnd la  

आउटपुट:

   eti--sqjh-k--p--u--cfm-vb-owgzyx-rnd-la  

इनपुट:

a

आउटपुट:

a

वास्तव में अच्छी आस्की कला
अनुकूलक

2
क्या होगा यदि एक X और + ओवरलैप दोनों एक ही स्थान पर हों? या यह एक ऐसा मामला नहीं है जिसके लिए हमें हिसाब देना चाहिए?
theonlygusti

@theonlygusti "यदि दो से अधिक रेखाएं ओवरलैप करती हैं, तो उनमें से कोई भी जोड़ी वैध ओवरलैप्स में से एक होगी" जैसे कि उदाहरण के लिए /और -अमान्य ओवरलैप हैं Xऔर +( / \ - and |) एक ही स्थिति में नहीं हो सकते हैं।
बेतरतीब

अभी भी उलझन में; हमें कुछ उदाहरण क्यों नहीं देते?
Theonlygusti

@theonlygusti: असल में, यह एक मामले में आपके खाते चाहिए नहीं है
Claudiu

जवाबों:


3

पर्ल, 219

कुछ सुधार अभी भी संभव हो सकते हैं।

#!perl -p0
/
/;$x="@-";
sub g{map"(?=$_)(.@_)+[".chr(1+ord).chr(~-ord)."]",a..z}
sub f{for$p(g"{$x}"){s/$p/$&&((_."\177"x~-$x)x y!
!!)/se;$_=lc;s![\0\\]!@_!g}$x++}
f"/";y!\17!/!;f"|";f"\\";y/\17/X/;for$p(g){s/$p/$&=~y! |!-+!r/e}

मुझे आजमाओ ।


6

जावास्क्रिप्ट (ईएस 6) 246 266 280 285 307

काफी भारी ...

स्ट्रिंग परम के साथ एक फ़ंक्शन और संशोधित स्ट्रिंग वापस करना। एक अनुगामी न्यूलाइन वैकल्पिक है जब तक कि इनपुट सिर्फ 1 पंक्ति न हो (मुझे पंक्ति लेन खोजने के लिए एक नई पंक्ति की आवश्यकता है)

बस किसी को खुश करने के लिए

F=b=>b.match(/\w/g).sort().map(l=>(q=b.indexOf(l),~p)?[o=b.indexOf('\n'),~o,o+2,1].map((d,i)=>{k=(q-p)/d|0;if(k&&k*d+p==q)for(m='/|\\-'[i];(p+=k>0?d:-d)-q;c==m|c>'`'&c<'{'?0:b[p]=c>' '?c<'/'|c>'z'?'+':'X':m)c=b[p]}):p=q,p=-1,b=[...b])&&b.join('')

अधिक पठनीय

F=b=>
  b.match(/\w/g).sort().map(l=>
    (q=b.indexOf(l),~p)?
    [o=b.indexOf('\n'),~o,o+2,1].map((d,i)=>{
      k=(q-p)/d|0;
      if(k&&k*d+p==q)
        for(m='/|\\-'[i];
              (p+=k>0?d:-d)-q;
              c==m|c>'`'&c<'{'?0:b[p]=c>' '?c<'/'|c>'z'?'+':'X':m)
            c=b[p]
    })
    :p=q
  ,p=-1,b=[...b])
  &&b.join('')

फ़ायरफ़ॉक्स / फायरबग कंसोल में टेस्ट करें

console.log(F('\
b     d\n\
       \n\
       \n\
       \n\
       \n\
      e\n\
c     a\n'))

console.log(F('\
     dk    j\n\
            \n\
 b    l     \n\
            \n\
 c   fg     \n\
            \n\
     a    m \n\
            \n\
   i      h \n\
     e      \n'))

console.log(F('\
b     d    \n\
           \n\
           \n\
     h   gi\n\
           \n\
      e  f \n\
c     a    \n'))

उत्पादन

b     d
|\   /|
| \ / |
|  X  |
| / \ |
|/   \e
c     a

     dk----j
    /||   / 
 b / |l  /  
 |X  | \/   
 c \ fg/\   
    \|/\ \  
     a  \ m 
    /|   \  
   i-+----h 
     e      

b     d    
|\   /|    
| \ / |    
|  X h+--gi
| / \ |  | 
|/   \e--f 
c     a    

मैं 341चरस गिनता हूं ।
mbomb007

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