संरेखित लाइनें!


31

संरेखित लाइनें!

एक चरित्र और एक बहुस्तरीय स्ट्रिंग को देखते हुए, आपका काम स्ट्रिंग की प्रत्येक पंक्ति को पैड करना है, ताकि वे दिए गए सीमांकक के बीच में पंक्तिबद्ध हों।

उदाहरण

इनपुट:

,
Programming, Puzzles
And, Code golf

आउटपुट:

Programming, Puzzles
        And, Code golf

इनपुट

इनपुट एक बहुस्तरीय स्ट्रिंग और एक चरित्र होगा (जिसे आप के बीच संरेखित करेंगे), आप इन्हें किसी भी क्रम / प्रारूप में ले सकते हैं जिसे आप चाहते हैं। चरित्र प्रति पंक्ति एक बार दिखाई देगा। इनपुट की प्रत्येक पंक्ति लंबाई में भिन्न हो सकती है।

इनपुट फ़ंक्शन तर्कों या STDIN के माध्यम से हो सकता है।

उत्पादन

आउटपुट एक ही स्ट्रिंग केंद्रित होना चाहिए। आपको एक अनुगामी न्यूलाइन और कोई अनुगामी व्हाट्सएप की अनुमति नहीं है।

आउटपुट को न्यूनतम स्थानों के साथ गद्देदार किया जाना चाहिए । आप इनपुट में किसी भी प्रमुख व्हाट्सएप को नहीं हटा सकते हैं (यदि यह मौजूद है)।

आउटपुट फंक्शन रिटर्न या STDOUT से हो सकता है।


क्या पूरे प्रोग्राम का इनपुट कमांड-लाइन तर्कों से आ सकता है, या क्या यह मना है?
DLosc

@ डल हाँ, निश्चित रूप से
डाउनगेट

1. फ़ंक्शन / कमांड-लाइन तर्कों के लिए, क्या हमें एक स्ट्रिंग पढ़ना चाहिए या प्रति तर्क एक लाइन स्वीकार्य होगी? 2. क्या हमें न्यूनतम स्थानों के साथ लाइनों को पैड करना होगा ?
डेनिस

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

@vihan क्या कार्य प्रति तर्क में एक पंक्ति में हो सकते हैं?
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, और फिर प्रत्येक स्ट्रिंग में the (वर्ण) का सूचकांक ढूंढें।
  • (⌈/-+): प्रत्येक इंडेक्स को सबसे बड़े इंडेक्स से घटाकर, आवश्यक रिक्त स्थान की मात्रा देते हुए
  • ' '/⍨¨: उन मूल्यों में से प्रत्येक के लिए, कि कई रिक्त स्थान उत्पन्न करते हैं
  • 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

CJam, 23 22 20 बाइट्स

2 बाइट बचाने के लिए डेनिस के लिए धन्यवाद।

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

यह कमांड-लाइन तर्कों और एसटीडीआईएन से चरित्र को पढ़ता है।

ऑनलाइन दुभाषिया कमांड-लाइन तर्कों का समर्थन नहीं करता है, लेकिन आप यहां एक समकक्ष संस्करण का परीक्षण कर सकते हैं।

व्याख्या

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 का उपयोग इनपुट अनपैकिंग के लिए किया जाता है। MY IDLE इनपुट के रूप में मल्टीलाइन स्ट्रिंग्स ले रहा है।


@ डॉल्स एक बहुस्तरीय स्ट्रिंग में आईडीएलई पेस्टिंग में मेरे लिए काम करता है।
xnor

हम्म। जब मैं ऐसा करता हूं (IDLE 3.3.4, विंडोज 7), cसीमांकक प्राप्त करता है और sएक खाली सूची प्राप्त करता है। बाद input()में शेष लाइनों को एक-एक करके वापस करने के लिए कहता है ।
DLosc

@ डलास अजीब। मैं अपने ब्राउज़र से सीधे आइडल प्रॉम्प्ट में स्ट्रिंग को कॉपी-पेस्ट कर रहा हूं। क्या आप भी यही कर रहे हैं? आईडीएल 3.2.2, विंडोज 7 के मामले में यह मायने रखता है।
19

वही। यहां देखें एक स्क्रीनशॉट ...
DLosc

@DLosc स्टिल मेरे लिए ( स्क्रीनशॉट ) काम करता है । हालांकि मुझे समझ नहीं आ रहा है कि मैं क्या कहने जा रहा हूं, यह संकलक या पर्यावरण विशिष्ट व्यवहार है , और मैंने प्रासंगिक जानकारी निर्दिष्ट करने का प्रयास करने के लिए संपादन किया। फ़ंक्शन संस्करण पायथन 2 में 3 वर्ण लंबा है।
xnor

3

जेली , 12 बाइट्स

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

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

J elly H yper T रेनिंग (JHT) में हमारे celly अभ्यास चैट रूम में caird coinheringaahing के साथ किया और तैयार किया गया ।

यह काम किस प्रकार करता है

तीसरा कमांड लाइन तर्क (पहला इनपुट) मल्टी-लाइन स्ट्रिंग होना चाहिए, और चरित्र चौथा कमांड लाइन तर्क (दूसरा इनपुट) होना चाहिए।

Ỵ © w € µạṀ⁶ẋż®Y ~ पूर्ण कार्यक्रम।

। ~ Newlines द्वारा स्ट्रिंग को विभाजित करें।
 © ~ परिणाम को रजिस्टर में कॉपी करें।
  w € ~ प्रत्येक पंक्ति पर वर्ण की पहली घटना का सूचकांक प्राप्त करें।
      Ṁ ~ अधिकतम ले।
    µạ ~ और निरपेक्ष मान लेते हुए, इसे प्रत्येक सूचकांक से घटाते हैं।
       ⁶ẋ ~ एक स्थान को दोहराएं जो कई बार (वेक्टरकृत) होता है।
         ż® ~ जो रजिस्टर में संग्रहीत किया गया था, उसके साथ इंटरलेव करें।
           Y ~ newlines से जुड़ें और स्पष्ट रूप से प्रिंट करें।

मुझे यकीन नहीं है कि इनपुट को लाइनों की सूची के रूप में लेने की अनुमति है या नहीं, इसलिए यह इनपुट के रूप में एक बहुस्तरीय स्ट्रिंग लेता है। यदि इसकी अनुमति थी:

10 बाइट्स

w€µạṀ⁶ẋż³Y

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


1
जब आप जानते हैं कि आपने एक सफल कमरा बनाया है
एरिक आउट दॉलफर

2

मतलाब / ऑक्टेव, 106 बाइट्स

फंक्शन जो चरित्र, स्ट्रिंग, स्ट्रिंग के लिए तीन अलग-अलग तर्कों का उपयोग करता है; और परिणाम में परिणाम देता है:

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

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

टेम्प्लेट स्ट्रिंग्स का उपयोग करते हुए, 2 नई रेखाएँ महत्वपूर्ण और गिनी जाती हैं।

किसी भी EcmaScript 6 संगत ब्राउज़र में स्निपेट का परीक्षण करना (जो कि फ़ायरफ़ॉक्स है। क्रोम डिफ़ॉल्ट मापदंडों का समर्थन नहीं करता है)

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]);}}}

Ungolfed संस्करण:

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 ngn के लिए धन्यवाद।

एपीएल वास्तव में स्ट्रिंग प्रसंस्करण में इतना बुरा नहीं है, अगर सरणियों के साथ काम करने की अनुमति दी जाती है। इस चुनौती में, हमने सबसे उपयुक्त प्रारूप चुना, जिसका अर्थ है एपीएल का अर्थ है लेफ्ट लॉजिक के रूप में टेक्स्ट वैक्टर और वेक्टर का स्केलर राइट तर्क के रूप में। यह भी प्रति पंक्ति कई सीमांकक संभालती है, और प्रत्येक पंक्ति के पहले एक को संरेखित करती है।

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

⊣,¨⍨ प्रत्येक पंक्ति के साथ प्रस्तुत करना

' '⍴¨⍨ जितने स्थान

⌈.⍳ लाइनों के बीच वर्ण का सबसे सही सूचकांक

- ऋण

⍳¨ प्रत्येक पंक्ति में वर्ण का सूचकांक

APL ऑनलाइन की कोशिश करो! ( आउटपुट को प्रिंट करने के लिए वर्टिकल जोड़ा गया)

बोनस? किसी भी संख्या में तार के लिए काम करता है , और सीमांकक (बाईं ओर से संरेखित)।


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

हां बिल्कुल।
आदम डे

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 तर्क लेता है। पहला है स्ट्रिंग, दूसरा है संरेखित करने वाला वर्ण। ये तर्क निहित तर्क @, और n हैं।

पहले, मैं प्रसंस्करण को आसान बनाने के लिए, स्ट्रिंग को एक नई लाइन संलग्न करता हूं।

@='
'..@

अब, मैं हर संरेखण चरित्र के पदों की एक सूची तैयार करता हूं, जिसका उपयोग करते हुए 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.*¶)

यह पहली पंक्ति से मेल खाता है और यह भी संरेखित करता है कि संरेखण वर्ण से पहले कितने वर्ण थे। (.NET इस मामले में प्रत्येक चर के लिए एक मैच स्टैक रखता है $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)))

पहला पैरामीटर चरित्र है, दूसरा संरेखित करने के लिए स्ट्रिंग की एक सूची है।

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

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