কানেক্টিং লেটার


23

আপনার একটি প্রোগ্রাম বা ফাংশন লিখতে হবে যা একটি স্ট্রিং হিসাবে আখ্যায়িত অক্ষরের ব্লক গ্রহণ করে এবং আউটপুট দেয় বা বর্ণমালা সংলগ্ন বর্ণগুলি সংযুক্ত থাকে এমন অনুরূপ স্ট্রিং প্রদান করে।

একটি চাক্ষুষ উদাহরণ (আকারে input => output):

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

বিস্তারিত

  • ইনপুট হ'ল স্ট্রিং, স্পেস, নিউলাইন এবং প্রথম Nছোট ছোট অক্ষরের প্রত্যেকটির একটি হতে হবে ।1 <= N <= 26
  • ইনপুটটির লাইনগুলি একটি সম্পূর্ণ আয়তক্ষেত্রাকার ব্লক তৈরি করার জন্য ফাঁক দিয়ে প্যাড করা হবে।
  • বর্ণমালার সংলগ্ন প্রতিটি জোড়া বর্ণ একই সারি, কলাম বা তির্যক রেখায় থাকবে এবং এটি ব্যবহার করে একটি সরল আসকি লাইনের সাথে সংযুক্ত করা উচিত \ / | or -। (রেখার দৈর্ঘ্য ০. হতে পারে)
  • নিম্নলিখিত ধরণের দুটি-লাইনের ওভারল্যাপগুলি পরিচালনা করা উচিত:

    / and \ become X
    | and - become +
    / and / become /
    \ and \ become \
    | and | become |
    - and - become -
    [letter] and [anything] become [letter]
    
  • অন্য কোনও ধরণের দুই-লাইনের ওভারল্যাপ ঘটবে না।

  • যদি দুটি লাইনের বেশি ওভারল্যাপ হয় তবে তাদের যে কোনও জোড়া বৈধ ওভারল্যাপগুলির মধ্যে একটির নিশ্চয়তা পাবে। (যেমন [letter] / |ট্রিপলেট কখনও ঘটবে না)
  • ফাঁকা স্থানগুলি \ / | - X and +ইনপুট এবং আউটপুটে পরিবর্তনের পরিবর্তে অভিন্ন হওয়া উচিত।
  • ট্রেলিং নিউলাইন optionচ্ছিক তবে ইনপুট এবং আউটপুট জন্য একই হতে হবে।
  • এটি কোড-গল্ফ তাই সংক্ষিপ্ত এন্ট্রি জিততে পারে।

উদাহরণ

ইনপুট:

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
এক্স এবং + ওভারল্যাপ উভয়ই একই জায়গায় হওয়া উচিত? বা এটি কি আমাদের অ্যাকাউন্ট করা উচিত নয়?
theonlygusti

@ থিওনলিগুস্টি "যদি দুটি লাইনের ওভারল্যাপ হয় তবে তাদের যে কোনও একটি বৈধ ওভারল্যাপের মধ্যে একটি হবে" যেমন: /এবং -অবৈধ ওভারল্যাপ হয় Xএবং +( / \ - and |) একই পজিশনে ঘটতে পারে না।
এলোমেলো

এখনও বিভ্রান্ত; আমাদের কিছু উদাহরণ দেয় না কেন?
theonlygusti

@ থিওনলিগুস্তি: মূলত, আপনার যে অ্যাকাউন্টটি জবাবদিহি করা উচিত তা নয়
ক্লাদিউ

উত্তর:


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

জাভাস্ক্রিপ্ট (ES6) 246 266 280 285 307

বেশ বড় ...

স্ট্রিং প্যারাম সহ একটি ফাংশন এবং পরিবর্তিত স্ট্রিংটি ফেরত। ইনপুটটি কেবল 1 সারি না হওয়া পর্যন্ত একটি অনুসরণযোগ্য নিউলাইন lineচ্ছিক (সারি লেনটি সন্ধান করতে আমার একটি নতুন লাইন দরকার)

কাউকে খুশি করার জন্য

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 ইনডেন্টেশন হোয়াইটস্পেস এবং নিউলাইনগুলি গণনা করবেন না
edc65
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.