সারিবদ্ধ লাইনে!


31

সারিবদ্ধ লাইনে!

একটি অক্ষর এবং একাধিক স্ট্রিং দেওয়া, আপনার কাজ স্ট্রিংয়ের প্রতিটি লাইন প্যাড করা যাতে তারা প্রদত্ত ডিলিমিটারের মধ্যে লাইন থাকে।

উদাহরণ

ইনপুট:

,
Programming, Puzzles
And, Code golf

আউটপুট:

Programming, Puzzles
        And, Code golf

ইনপুট

ইনপুটটি একাধিক স্ট্রিং এবং একটি অক্ষর হবে (যার মধ্যে আপনি সারিবদ্ধ হবেন), আপনি এটি যে কোনও ক্রম / বিন্যাসে নিতে পারেন। চরিত্রটি প্রতি লাইনে একবারে উপস্থিত হবে। ইনপুটটির প্রতিটি লাইন দৈর্ঘ্যে আলাদা হতে পারে।

ইনপুট ফাংশন আর্গুমেন্ট বা STDIN এর মাধ্যমে হতে পারে।

আউটপুট

আউটপুট একই স্ট্রিং কেন্দ্রিক হওয়া উচিত। আপনাকে একটি অনুবর্তনযোগ্য নতুন লাইন এবং কোনও পেছনের সাদা স্থানের অনুমতি দেওয়া হচ্ছে।

আউটপুটটি ফাঁকা হওয়া সর্বনিম্ন পরিমাণের সাথে প্যাড করা উচিত । আপনি ইনপুটটিতে কোনও নেতৃস্থানীয় হোয়াইটস্পেস অপসারণ করতে পারবেন না (যদি তা বিদ্যমান থাকে)।

আউটপুট ফাংশন রিটার্ন বা STDOUT থেকে হতে পারে।


কমান্ড-লাইন আর্গুমেন্ট থেকে কোনও সম্পূর্ণ প্রোগ্রামে ইনপুট আসতে পারে বা এটি নিষিদ্ধ?
DLosc

@ডলোকস হ্যাঁ, অবশ্যই
ডাউনোগোট

1. ফাংশন / কমান্ড-লাইন আর্গুমেন্টের জন্য, আমাদের কি একটি স্ট্রিং পড়তে হবে বা আর্গুমেন্টে একটি লাইন গ্রহণযোগ্য হবে? ২. আমাদের কি সর্বনিম্ন পরিমাণে ফাঁকা জায়গাগুলি দিয়ে লাইনগুলি প্যাড করতে হবে ?
ডেনিস

@ ডেনিস আপনি এটি একটি স্ট্রিংয়ে নিতে পারেন। বা যুক্তি অনুযায়ী এক-লাইন। "আপনি আপনার যে কোনও ক্রমে এগুলি নিতে পারেন" । হ্যাঁ, আপনার নূন্যতম জায়গাগুলির সাথে লাইনগুলি প্যাড করতে হবে। আমি
অনুমানটি

@ভিহান কি যুক্তি অনুযায়ী ফাংশনগুলি এক লাইনে নিতে পারে?
xnor

উত্তর:



13

এপিএল (37)

এপিএল স্ট্রিং প্রসেসিংয়ে খুব ভাল নয় (বা আমি অবশ্যই গল্ফিংয়ের পক্ষে ভাল নই)।

{⌽∊R,¨' '/⍨¨(⌈/-+)⍺⍳⍨¨⌽¨R←S⊂⍨S=⊃S←⌽⍵}

এটি অক্ষরটিকে তার বাম আর্গুমেন্ট হিসাবে এবং মাল্টলাইন স্ট্রিংটিকে তার ডান আর্গুমেন্ট হিসাবে গ্রহণ করে। ধারণা করা হয় যে মাল্টিলাইন স্ট্রিংটি একটি লাইনফিডে শেষ হয় (উদাহরণস্বরূপ এর A\nB\nC\nচেয়ে বেশি A\nB\nC।) যেহেতু আমি "যে কোনও বিন্যাস [আমি] ইচ্ছুক" ব্যবহার করতে পারি, এবং এটি পাঠ্য ফাইলগুলির জন্য প্রচলিত ফর্ম্যাটও বলে আমি মনে করি এটি যুক্তিসঙ্গত।

ব্যাখ্যা:

  • S←⌽⍵: স্ট্রিংটি বিপরীত করুন এবং এতে সঞ্চয় করুন S
  • R←S⊂⍨S=⊃S: Sএটির প্রথম অক্ষরটি বিভক্ত করুন এবং স্ট্রিংগুলির অ্যারেটি সংরক্ষণ করুন R
  • ⍺⍳¨⌽¨R: প্রতিটি স্ট্রিংকে বিপরীত করুন Rএবং তারপরে প্রতিটি স্ট্রিংয়ে of (অক্ষর) এর সূচকটি সন্ধান করুন।
  • (⌈/-+): প্রয়োজনীয় সূচনার পরিমাণ প্রদান করে বৃহত্তম সূচক থেকে প্রতিটি সূচককে বিয়োগ করুন
  • ' '/⍨¨: এই মানগুলির প্রত্যেকটির জন্য, অনেকগুলি স্থান তৈরি করে
  • R,¨: প্রতিটি স্ট্রিংয়ের মধ্যে ফাঁকা স্থান যুক্ত করুন R
  • : সমস্ত স্ট্রিং একসাথে যোগদান
  • : এটি বিপরীত করুন (মূল ক্রমটি ফিরে পেতে)

উদাহরণ:

      NL←⎕UCS 10 ⍝ newline
      test←'Programming, Puzzles',NL,'And, Code golf',NL
      test ⍝ test string
Programming, Puzzles                
And, Code golf                      

      ⍝ run the function
      +X←','{⌽∊R,¨' '/⍨¨(⌈/-+)⍺⍳⍨¨⌽¨R←S⊂⍨S=⊃S←⌽⍵}test
Programming, Puzzles                        
        And, Code golf                      

      ⍴X ⍝ result is really a string with newlines, not a matrix
44

9

সিজেম, 23 22 20 বাইট

2 বাইট সংরক্ষণের জন্য ডেনিসকে ধন্যবাদ।

ea_rf#_:e>\fm.{S*\N}

এটি কমান্ড-লাইন আর্গুমেন্টগুলি থেকে লাইনগুলি এবং STDIN এর চরিত্রটি পড়বে।

অনলাইন অনুবাদক কমান্ড-লাইন আর্গুমেন্টকে সমর্থন করে না, তবে আপনি এখানে একটি সমমানের সংস্করণ পরীক্ষা করতে পারেন

ব্যাখ্যা

ea    e# Get the lines from ARGV.
_rf#  e# Duplicate input, read the character and find index of character in each line.
_:e>  e# Duplicate indices and find maximum.
\fm   e# Subtract each index from the maximum index.
.{    e# Apply this block to each pair of line and (max_index - index).
  S*  e#   Get a string with the right amount of spaces.
  \N  e#   Swap spaces with line and push a line feed.
}

9

পিপ , 22 20 18 + 1 = 19 বাইট

Y_@?qMgsX(MXy)-y.g

কমান্ড-লাইন আর্গুমেন্ট এবং এসটিডিআইএন থেকে ডিলিমিটার হিসাবে স্ট্রিং নেয় ( মার্টিনের সিজেএম উত্তর থেকে ধার নেওয়া ধারণা )। -nপৃথক লাইনে আউটপুট মান প্রিন্ট করতে পতাকা ব্যবহার করে।

                    g is list of cmdline args; s is space (implicit)
    q               Read the delimiter from stdin
 _@?                Construct a lambda function that takes a string and returns
                       the index of the delimiter in it
     Mg             Map that function to each remaining item in g
Y                   Yank the resulting list of indices into the variable y

         (MXy)-y    Take the max of y minus each element in y
       sX           Space, repeated that many times...
                .g  ... concatenated to each item in g
                    Print, newline-separated (implicit, -n flag)

এবং একটি উদাহরণ চালান:

C:\Users\dlosc> pip.py -ne Y_@?qMgsX(MXy)-y.g "Programming, Puzzles" "And, Code golf"
,
Programming, Puzzles
        And, Code golf

7

জাভাস্ক্রিপ্ট ইএস 2015, 113 বাইট

f=(c,s)=>s.split`
`.map((e,_,a)=>' '.repeat(a.map(j=>j.indexOf(c)).reduce((g,h)=>g>h?g:h)-e.indexOf(c))+e).join`
`

গল্ফিং ভাষাগুলি এতদূর পোস্ট করা ততটা ছোট নয়। দুই ফাংশন আর্গুমেন্ট, যেমন যেমন ইনপুট লাগে f(',','Programming, Puzzles\nAnd, Code golf')। নীচের স্নিপেটটি নিরবচ্ছিন্ন এবং এটি পরীক্ষার একটি সহজ পদ্ধতি অন্তর্ভুক্ত করেছে।

f=function(c,s){
  return s
    .split('\n')
    .map(function(e,_,a){
      return ' '.repeat(
        a.map(function(f){
          return f.indexOf(c)
        }).reduce(function(g,h){
          return g>h?g:h
        })-e.indexOf(c)
      )+e
    })
    .join('\n')
}

run=function(){document.getElementById('output').innerHTML=f(document.getElementById('char').value,document.getElementById('string').value)};document.getElementById('run').onclick=run;run()
<label>Character: <input type="text" id="char" value="," maxlength="1" /></label>
<textarea id="string" rows="4" cols="30" style="display:block">
Programming, Puzzles
And, Code Golf</textarea><button id="run">Run</button><br />
<pre id="output"></pre>


6

পাইথ, 27 24 বাইট

V.z+.[deSmxdz.z<NJxNz>NJ

সর্বশেষ পাইথের জন্য আপডেট হয়েছে ।

সরাসরি নমুনা.

27-বাইট সংস্করণ

jbm+.[eSmxkz.z<dJxdz\ >dJ.z

সরাসরি নমুনা.


যখনই আপনি jbmআপনার উত্তরের শুরুতে দেখেন , আপনার অবিলম্বে চিন্তাভাবনা শুরু করা উচিত V
orlp

অথবা সহজেই সরানb
Jakube

5

জুলিয়া, 117 বাইট

f(c,t)=(s=[split(l,c)for l=split(t,"\n")];join(map(i->lpad(i[1],maximum(map(i->length(i[1]),s))," ")*c*i[2],s),"\n"))

Ungolfed:

function f(c::String, t::String)
    # Create an array of arrays by splitting on newlines and
    # then on the given delimiter
    s = [split(l, c) for l in split(t, "\n")]

    # Find the maximum length on the left side of the delimiter
    m = maximum(map(i -> length(i[1]), s))

    # Rejoin on the delimiter and pad each line with spaces,
    # and rejoin this with newlines
    join(map(i -> lpad(i[1], m, " ") * d * i[2], s), "\n")
end

5

পাইথন 3, 85 (আইডিএল 3.2.2, উইন্ডোজ)

c,*s=input().split('\n')
for x in s:print(' '*(max(z.find(c)for z in s)-x.find(c))+x)

অনেকটাই অকপট. এটি স্ট্রিংয়ের মধ্যে অক্ষরের অবস্থানটি দু'বার খুঁজে পেয়েছে: একবার সর্বাধিক সন্ধান করতে (একবারে প্রতি লাইনে একবার), এবং একবার অফসেট সন্ধান করতে। আমি এগুলি একত্রিত করার চেষ্টা করেছি তবে এটি দীর্ঘ ছিল।

পাইথন 3 ইনপ্যাক আনপ্যাকিংয়ের জন্য ব্যবহৃত হয়। আমার আইডলটি মাল্টলাইন স্ট্রিংগুলিকে ইনপুট হিসাবে নেয় বলে মনে হচ্ছে।


@ ডিএলকস মাল্টিলাইন স্ট্রিংয়ে আইডিএল পেস্ট করার জন্য আমার পক্ষে কাজ করে।
xnor

হুম। যখন আমি এটি করি (আইডিএল ৩.৩.৪, উইন্ডোজ)), cডিলিমিটারটি sপায় এবং একটি খালি তালিকা পায়। পরের কলগুলি input()একের পর এক অবশিষ্ট রেখাগুলি ফিরিয়ে আনবে ।
ডিএলসোক

পছন্দ করুন আমি সরাসরি আমার ব্রাউজার থেকে আইডল প্রম্পটে স্ট্রিংটি অনুলিপি করছি। আপনি কি একই কাজ করছেন? আইডিএল ৩.২.২, উইন্ডোজ এর ক্ষেত্রে গুরুত্বপূর্ণ।
xnor

একই। এখানে একটি স্ক্রিনশট ...
DLosc

@DLosc এখনও আমার জন্য কাজ করে ( স্ক্রিনশট )। কী হচ্ছে তা আমি বুঝতে না পেরে, আমি এটি সংকলক বা পরিবেশ নির্দিষ্ট আচরণ হিসাবে বলতে যাচ্ছি এবং প্রাসঙ্গিক তথ্য নির্দিষ্ট করার চেষ্টা করার জন্য আমি সম্পাদনা করেছি। পাইথন ২
xnor

3

জেলি , 12 বাইট

Ỵ©w€µạṀ⁶ẋż®Y

এটি অনলাইন চেষ্টা করুন!

সম্পন্ন এবং golfed caird coinheringaahing মধ্যে জে Elly এইচ yper টি বৃষ্টি (JHT) , আমাদের জেলি অনুশীলন চ্যাট রুম।

কিভাবে এটা কাজ করে

তৃতীয় কমান্ড লাইন আর্গুমেন্ট (প্রথম ইনপুট) হতে হবে মাল্টি-লাইন স্ট্রিং, এবং অক্ষরটি চতুর্থ কমান্ড লাইন আর্গুমেন্ট (দ্বিতীয় ইনপুট) হওয়া উচিত।

Program © w € µạṀ⁶ẋż®Y ~ সম্পূর্ণ প্রোগ্রাম।

~ New নতুন লাইনের মাধ্যমে স্ট্রিংকে বিভক্ত করুন।
 ~ The রেজিস্টারটিতে ফলাফলটি অনুলিপি করুন।
  w € each প্রতিটি লাইনে অক্ষরের প্রথম উপস্থিতির সূচক পান।
      ~ ~ সর্বাধিক নিন।
    µạ the এবং একে প্রতিটি সূচক থেকে বিয়োগ করে নিরঙ্কুশ মান নিয়ে।
       ~ A এমন জায়গার পুনরাবৃত্তি করুন যা বহুবার (ভেক্টরাইজ করে)।
         ~ the রেজিস্টারে যা ছিল তা দিয়ে ইন্টারলিভ
           Y new নিউলাইন দ্বারা যোগ দিন এবং স্পষ্টভাবে মুদ্রণ করুন।

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

10 বাইট

w€µạṀ⁶ẋż³Y

এটি অনলাইন চেষ্টা করুন!


1
আপনি যখনই জানেন যে আপনি একটি সফল ঘর তৈরি করেছেন
এরিক দি আউটগলফার

2

মতলব / অষ্টাভ, 106 বাইট

চরিত্র, স্ট্রিং, স্ট্রিংয়ের জন্য তিনটি পৃথক যুক্তি ব্যবহার করে এমন ফাংশন; এবং stdout ফলাফল দেয়:

function f(c,s,t)
p=find(s==c)-find(t==c);disp([repmat(32,1,max(-p,0)) s]),disp([repmat(32,1,max(p,0)) t])

মতলব উদাহরণ:

>> f(',', 'Programming, Puzzles', 'And, Code golf')
Programming, Puzzles
        And, Code golf

অথবা অক্টাভা দোভাষী দিয়ে অনলাইনে চেষ্টা করে দেখুন


2

জুলিয়া, 80 বাইট

f(c,s)=(t=split(s,'
');u=[search(i,c)for i=t];join([" "].^(maxabs(u)-u).*t,'
'))

Ungolfed:

function f(c,s)
  # converts multiline string to array of single-line strings
  t=split(s,'\n')

  # creates array of positions of delimiter
  u=[search(i,c)for i=t]

  # Appends appropriate number of spaces to each line
  # (uses elementwise operations to achieve this result)
  v=[" "].^(maxabs(u)-u).*t

  # Recombines array of strings to multiline string and returns
  return join(v,'\n')
end

2

জাভাস্ক্রিপ্ট (ES6), 105

টেম্পলেট স্ট্রিং ব্যবহার করে, দুটি নতুনলাইন উল্লেখযোগ্য এবং গণনা করা হয়।

যে কোনও এক্সমা স্ক্রিপ্ট 6 সামঞ্জস্যপূর্ণ ব্রাউজারে স্নিপেট চালানোর পরীক্ষা করুন (এটি ফায়ারফক্স Chrome ক্রোম ডিফল্ট প্যারামিটার সমর্থন করে না)

f=(s,c,p=(s=s.split`
`).map(r=>m<(v=r.indexOf(c))?m=v:v,m=0))=>s.map((r,i)=>' '.repeat(m-p[i])+r).join`
`

// Ungolfed
f=(s,c)=>{
  s=s.split('\n')
  p=s.map(r=>r.indexOf(c))
  m=Math.max(...p)
  s=s.map((r,i)=>' '.repeat(m-p[i])+r)
  return s.join('\n')
}  

// TEST
out=x=>O.innerHTML+=x+'\n'

out(f(`Programming, Puzzles
And, Code golf`,','))
<pre id=O></pre>


2

পাইথন 2, 93 বাইট

def f(x,y,z):
 p=y.index(x)-z.index(x)
 if p<0:y=" "*abs(p)+y
 else:z=" "*p+z
 print y+'\n'+z

যেমন বলা হয়:

f(',','Programming, Puzzles','And, Code Golf')

2

সি # 4.0, 329 320 307 বাইট

using System;class P{static void Main(){Func<char,dynamic>f=(d)=>Console.ReadLine().Split(d);var c=f(' ')[0][0];var m=0;var l=new string[9999][];var z=0;for (l[z]=f(c);l[z].Length==2;l[z]=f(c)){m=Math.Max(l[z][0].Length,m);z++;}for(var i=0;i<z;i++){Console.WriteLine("{0,"+m+"}"+c+"{1}",l[i][0],l[i][1]);}}}

অবরুদ্ধ সংস্করণ:

using System;
class P
{
    static void Main()
    {
        // lamba to to read a line and split on a char, returns an array of 
        Func<char,dynamic>f=(d)=>Console.ReadLine().Split(d); 
        // read the separator char by taking the first char of the first string 
        // in the array
        // use our lambda
        var c=f(' ')[0][0];
        var m=0; // max position where char is found
        var l=new string[9999][]; // hold all input
        var z=0; // count valid entries in l
        // loop until the input doesn't contain an
        // array with 2 elements
        // here we use our lambda agian, twice
        for (l[z]= f(c);l[z].Length==2;l[z] = f(c))
        {
            // calculate max, based on length 
            // of first element from the string array
            m=Math.Max(l[z][0].Length,m);
            z++; // increase valid items
        }
        // loop over all valid items
        for(var i=0;i<z;i++)
        {
        // use composite formatting with the padding option
        // use the max to create a format string, when max =4 
        // and seperator char is , this will give
        // "{0,4},{1}"
            Console.WriteLine("{0,"+ m +"}"+c+"{1}",l[i][0],l[i][1]);
        }
    }
}

এটি সর্বাধিক 9999 লাইন গ্রহণ করে ...


2

ডায়ালগ এপিএল , 22 20 16 বাইট

-4 এনএনজি ধন্যবাদ।

অ্যারে দিয়ে কাজ করার অনুমতি পেলে এপিএল আসলে স্ট্রিং প্রসেসিংয়ে খুব খারাপ হয় না। এই চ্যালেঞ্জের মধ্যে আমরা সর্বাধিক উপযুক্ত বিন্যাসটি বেছে নিতে পারি, যার জন্য এপিএল মানে বাম আর্গুমেন্ট হিসাবে পাঠ্য ভেক্টরগুলির একটি ভেক্টর এবং ডেলিমিটারটি স্কেলার ডান আর্গুমেন্ট হিসাবে। এটি এমনকি প্রতি লাইন একাধিক ডিলিমিটার পরিচালনা করে এবং প্রতিটি লাইনের প্রথম একটিকে সারিবদ্ধ করে।

⊣,¨⍨' '⍴¨⍨⌈.⍳-⍳¨

⊣,¨⍨ সঙ্গে প্রতিটি লাইন প্রিপেন্ড করুন

' '⍴¨⍨ যত স্পেস হিসাবে

⌈.⍳ রেখাগুলির মধ্যে অক্ষরের ডানতম সূচক

- ঋণচিহ্ন

⍳¨ প্রতিটি লাইনে অক্ষরের সূচক

অনলাইন এপিএল চেষ্টা করুন! ( উলম্বভাবে মুদ্রণ আউটপুট যোগ করা হয়েছে)

বোনাস? যে কোনও সংখ্যক স্ট্রিং এবং ডিলিমিটারের জন্য কাজ করে (বাম-সর্বাধিক দ্বারা সারিবদ্ধ)।


⊣,¨⍨' '⍴¨⍨⌈.⍳-⍳¨
এনজিএন

হ্যা অবশ্যই.
অ্যাডম

1

সি #, 191

একটি ফাংশন হিসাবে. মোটামুটি আমার জেএস উত্তরের একটি পোর্টিং।

using System.Linq;string f(string s,char c){var q=s.Split('\n');int m=0,v;Array.ForEach(q,x=>m=m<(v=x.IndexOf(c))?v:m);return String.Join("\n",q.Select(x=>new String(' ',m-x.IndexOf(c))+x));}

1

রুবি, 74 বাইট

l=lambda{|d,s|s.each{|e|puts ' '*(s.map{|f|f.index(d)}.max-e.index(d))+e}}

এবং এটি পছন্দ করুন

l.call ',',['Programming, Puzzles','And, Code golf']

1

আর, 68 বাইট

function(c,x,y,r=regexpr)cat(x,"\n",rep(" ",r(c,x)-r(c,y)),y,sep="")

নামহীন ফাংশন যা 3ইনপুট নেয় ; cযা সারিবদ্ধ করার জন্য অক্ষর, xপ্রথম স্ট্রিং এবং yদ্বিতীয় স্ট্রিং।

আর-তে, ফাংশনটি regexprকোনও স্ট্রিংয়ে প্রদত্ত প্যাটার্নের অবস্থান দেয়। সমাধান regexprউভয় স্ট্রিংয়ের উপর প্রয়োগ করে এবং সাদা স্পেসগুলি পার্থক্যের জন্য পুনরাবৃত্তি করে কাজ করে এবং পরে কেবলমাত্র একটি নিউলাইন দ্বারা পৃথক পৃথক উভয় ইনপুট মুদ্রণ করে।


0

পাইথন 2, 67 66 বাইট

def a(d,l):
 i=l[0].index(d)
 for e in l:print' '*(i-e.index(d))+e

এর সাথে কল করা:

a(',', ['Programming, Puzzles', 'And, Code golf'])

0

মুনস্ক্রিপ্ট, 138 বাইট

(n)=>
 i=0
 @='
'..@
 l=[b-a for a,b in @gmatch "
().-()"..n]
 m=math.max unpack l
 (@gsub '
',(a)->
  i=i+1
  a..(' ')\rep m-l[i])\sub(2)

এটি একটি ফাংশন দেয় যা 2 টি আর্গুমেন্ট নেয়। প্রথমটি স্ট্রিং, দ্বিতীয়টি সারিবদ্ধ হওয়ার জন্য চরিত্র। এই যুক্তিগুলি অন্তর্নিহিত যুক্তি @, এবং এন।

প্রথমে, প্রক্রিয়াটিকে আরও সহজ করার জন্য আমি স্ট্রিংয়ে একটি নতুন লাইন যুক্ত করি।

@='
'..@

এখন, আমি ব্যবহার করে প্রতিটি প্রান্তিককরণের চরিত্রের অবস্থানগুলির একটি তালিকা উত্পন্ন করি gmatch। এরপরে, আমি প্রতিটি লাইনের আগে নিউলাইনটি স্পেসের সঠিক সংখ্যার সাথে প্রতিস্থাপন করি, তারপরে আমি শুরুতে যুক্ত করা নতুন লাইনটি ছাঁটাই করি।


0

লুয়া, 169 বাইট

function a(d,t)m={}for k,v in pairs(t)do m[#m+1]=string.find(v,d)end o=math.max(unpack(m))for k,v in pairs(t)do print(string.rep(" ",o-(string.find(v,d)or 0))..v)end end

অন্যান্য উত্তরের মতো সংক্ষিপ্ত নয় তবে এটি আমার প্রথম: ডি


0

রেটিনা , 71 বাইট

+`^((.)(.*¶)*)((.)*\2.*¶)((?<-5>.)*(?(5)\2|(.)\2).*)
$1$#7$* $4$#5$* $6

এটি অনলাইন চেষ্টা করুন! দ্রষ্টব্য: এটি আউটপুটে প্রান্তিককরণ অক্ষর ছেড়ে দেয়; এটি 4 বাইট ব্যয়ে মোছা যায়। যদি কেবল দুটি স্ট্রিং সারিবদ্ধ হতে হয় তবে 52 বাইটের জন্য:

^(.)¶((.)*\1.*¶)((?<-3>.)*(.)*\1.*)
$#5$* $2$#3$* $4

ব্যাখ্যা:

^(.)¶

এটি সারিবদ্ধ অক্ষরের সাথে মেলে।

((.)*\1.*¶)

এটি প্রথম লাইনের সাথে মিলে যায় এবং প্রান্তিককরণের অক্ষরের আগে কয়টি অক্ষর ছিল তাও ট্র্যাক করে। (। নেট এই ক্ষেত্রে প্রতিটি ভেরিয়েবলের জন্য একটি ম্যাচ স্ট্যাক রাখে $3

((?<-3>.)*(.)*\1.*)

এটি দ্বিতীয় লাইনের সাথে মেলে, প্রথম লাইনে আমরা যতটা অক্ষর পেয়েছি তার জন্য অ্যাকাউন্ট করার চেষ্টা করছি। ?<-3>খালি না হওয়া অবধি ম্যাচটি প্রতিটি অক্ষরের জন্য স্ট্যাকটি পপ করে তোলে এবং এর (.)*পরে ম্যাচটি ব্যর্থ হয় এবং তারপরে প্রান্তিককরণের অক্ষরের আগে অবশিষ্ট অক্ষরের সাথে মেলে। এই সময়ে আমাদের নিম্নলিখিত ভেরিয়েবল আছে:

  • $1 প্রান্তিককরণ অক্ষর রয়েছে
  • $2 প্রথম লাইন থাকে
  • $3 একটি স্ট্যাক রয়েছে যার দৈর্ঘ্য প্রথম লাইন উপসর্গটি দ্বিতীয় সারির উপসর্গকে বিয়োগ করবে
  • $4 দ্বিতীয় লাইন রয়েছে
  • $5 একটি স্ট্যাক রয়েছে যার দৈর্ঘ্য দ্বিতীয় রেখার উপসর্গ বিয়োগ প্রথম লাইন উপসর্গ হয়

$#5$*তারপরে প্রথম লাইনটিকে দ্বিতীয়টির সাথে সারিবদ্ধ করার জন্য প্রয়োজনীয় সংখ্যক স্থানের উপসর্গ উপস্থাপন করে এবং এর বিপরীতে $#3$*

অনুরূপ যুক্তি মূল উত্তরের জন্য প্রযোজ্য, এখানে বাদে আমাদের দুটি লাইনের সন্ধান করতে হবে যা প্রান্তিক না হয় যাতে আমরা তাদের প্রান্তিককরণ করতে পারি (এটি এখানেই ?(5)আসে) এবং তারপরে সমস্ত রেখার উপর সারিবদ্ধতা পুনরাবৃত্তি করুন যতক্ষণ না তারা সমস্ত সমানভাবে বিন্যস্ত হয় ।


0

কমন লিস্প, 101 বাইট

(lambda(c l)(dolist(x l)(format t"~,,v@a~%"(-(apply'max(mapcar(lambda(x)#1=(position c x))l))#1#)x)))

প্রথম প্যারামিটারটি অক্ষর, দ্বিতীয়টি সারিবদ্ধ হওয়ার জন্য স্ট্রিংয়ের একটি তালিকা list

এটি অনলাইন চেষ্টা করুন!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.