एक पिरामिड का उत्पादन (या राजमार्ग)


39

एक गैर-रिक्त स्ट्रिंग s को देखते हुए, यहां तक ​​कि लंबाई के साथ, और एक सकारात्मक पूर्णांक n, इसकी ऊंचाई का प्रतिनिधित्व करते हुए, निम्नलिखित नियमों का उपयोग करके एक पिरामिड की रचना करें:

पिरामिड में n गैर-खाली लाइनें होनी चाहिए; अनुगामी newlines की अनुमति है। प्रत्येक 1 <= i <= n के लिए, i-th पंक्ति में प्रत्येक व्यक्तिगत चरित्र के साथ स्ट्रिंग होनी चाहिए जिसमें मैं बार-बार दोहराया जाता हूं; abcd 3 बार दोहराई जाती है जैसे कि aabbbcccddd बनती है। प्रत्येक पंक्ति को पैडिंग रिक्त स्थान के साथ केंद्रित किया जाना चाहिए ताकि प्रत्येक पंक्ति का मध्य लंबवत रूप से संरेखित हो। प्रत्येक पंक्ति के अंत में अनुगामी रिक्त स्थान की अनुमति है। आप पहली पंक्ति से पहले एक प्रमुख न्यूलाइन तक लेकिन कोई अन्य व्हाट्सएप नहीं कर सकते।

इनपुट स्ट्रिंग को एक palindrome होने की गारंटी नहीं है।

परीक्षण का मामला

s = 'o-o  o-o', n = 10:

                                    o-o  o-o                                    
                                oo--oo    oo--oo                                
                            ooo---ooo      ooo---ooo                            
                        oooo----oooo        oooo----oooo                        
                    ooooo-----ooooo          ooooo-----ooooo                    
                oooooo------oooooo            oooooo------oooooo                
            ooooooo-------ooooooo              ooooooo-------ooooooo            
        oooooooo--------oooooooo                oooooooo--------oooooooo        
    ooooooooo---------ooooooooo                  ooooooooo---------ooooooooo    
oooooooooo----------oooooooooo                    oooooooooo----------oooooooooo

1
सैंडबॉक्स पोस्ट user42649 द्वारा बनाया गया था, जो कि डिलीट होने तक मेरा अकाउंट था।
हाइपरएन्यूट्रीनो

क्या इस प्रश्न पर एक फ़ंक्शन के लिए आउटपुट स्ट्रिंग्स की एक सूची हो सकता है, प्रत्येक एक पंक्ति का प्रतिनिधित्व कर सकता है, या इसे नए सिरे से शामिल होना चाहिए?
नॉटजगन

7
एक पिरामिड का उत्पादन आप निश्चित रूप से एक राजमार्ग का मतलब है !
लुइस मेंडो

एज़्टेक पिरामिड जैसा दिखता है!
QBrute

3
@ क्यूब्र्यूट ना। एक
गोवा'द

जवाबों:


12

05AB1E , 9 बाइट्स

γ².D)ƶJ.C

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


γअदनान के जवाब से प्रेरित होकर, कोई कम राशि में; लेकिन Sयह भी काम करेगा।


γ          # Split into runs.    | ['0','-','0']
 ².D)      # Push n times.       | [['0','-','0'],['0','-','0'],['0','-','0']]
     ƶ     # Lift by index.      | [['0','-','0'],['00','---','00'],['000','---','000']]
      J    # Inner join.         | ['0-0','00--00','000---000']
       .C  # Center.             | Expected output.

मैं विश्वास नहीं कर सकता कि किसी ने वास्तव में आपके गलत पोस्ट को अस्वीकार कर दिया: /
जोनाथन एलन

1
@JonathanAllan मेरी परिहार्य गलतियों की आवृत्ति कुछ हद तक नकारात्मकता की हकदार है।
मैजिक ऑक्टोपस Urn

12

05AB1E , 11 बाइट्स

F²γN>×J}».C

05AB1E एन्कोडिंग का उपयोग करता है । इसे ऑनलाइन आज़माएं!


यह 168 से ऊपर इनपुट के साथ कायरतापूर्ण शुरू होता है। अन्यथा महान!
तुस्कीमी

@carusocomputing »रिक्त स्थान से आंतरिक सरणियों में मिलती है। इसे बदलकर Jकाम करना चाहिए (और मुझे लगता है कि आपको एक अलग उत्तर के रूप में पोस्ट करना चाहिए)।
अदनान

आह! क्या हमेशा से ऐसा ही रहा है? यदि हां, तो अच्छा है, अगर नहीं तो मुझे याद किया जाना चाहिए। धन्यवाद, करेंगे।
जादू ऑक्टोपस कलश

8

जेली , 14 13 बाइट्स

LH×Ḷ}Ṛ⁶ẋżxЀY

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

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

LH×Ḷ}Ṛ⁶ẋżxЀY  Main link. Arguments: s (string), n (integer)

L              Get the length l of s.
 H             Halve it, yielding l/2.
   Ḷ}          Unlength right; yield [0, ... n-1].
  ×            Compute [0, l/2, ..., l(n-1)/2].
     Ṛ         Reverse; yield [l(n-1)/2, ..., l/2, 0].
      ⁶ẋ       Space repeat; create string of that many spaces.
         xЀ   Repeat in-place each; repeat the individual characters of s
               1, ..., n times, yielding an array of n strings.
        ż      Zipwith; pair the k-th string of spaces with the k-th string of 
               repeated characters of s.
            Y  Sepatate the resulting pairs by linefeeds.

8

सी # (.NET कोर) , 139 137 136 130 बाइट्स

using System.Linq;s=>n=>Enumerable.Range(0,n).Select(i=>"".PadLeft((n+~i)*s.Length/2)+string.Concat(s.Select(c=>new string(c,i))))

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

stringड्राइंग की पंक्तियों के साथ एस की गणना करता है। एक बार परिणाम में शामिल होने के बाद इस तरह है:

                        _  _
                    ಠಠ__ಠಠ    ಠಠ__ಠಠ
                ಠಠಠ___ಠಠಠ      ಠಠಠ___ಠಠಠ
            ಠಠಠಠ____ಠಠಠಠ        ಠಠಠಠ____ಠಠಠಠ
        ಠಠಠಠಠ_____ಠಠಠಠಠ          ಠಠಠಠಠ_____ಠಠಠಠಠ
    ಠಠಠಠಠಠ______ಠಠಠಠಠಠ            ಠಠಠಠಠಠ______ಠಠಠಠಠಠ
ಠಠಠಠಠಠಠ_______ಠಠಠಠಠಠಠ              ಠಠಠಠಠಠಠ_______ಠಠಠಠಠಠಠ
  • 2 बाइट्स केविन क्रूज़सेन की बदौलत बच गए!
  • 1 बाइट मान स्याही के लिए धन्यवाद बचाया!
  • 6 बाइट्स ने LiefdeWen को धन्यवाद दिया बचा लिया!

1
कोष्ठक को हटाकर आप दो बाइट्स बचा सकते हैं (n-i-1)*s.Length/2। और मुझे आपके परीक्षण के मामले पसंद हैं। +1 :)
केविन क्रूज़सेन


1
अनिवार्य " ~iके बराबर है -i-1तो आप को बदलने के द्वारा एक बाइट को बचा सकता है," (n-i-1)करने के लिए (n+~i)
मूल्य इंक

1
और आप s=>n=>...एक और बाइट के लिए करी का उपयोग कर सकते हैं
LiefdeWen

1
@CarlosAlejo अलग सम्पादन पोस्ट करने के लिए क्षमा करें, लेकिन आप भी new string(' '...साथ बदल सकते हैं"".PadLeft(...
LiefdeWen

7

चेडर , 71 64 बाइट्स

@ValueInk की बदौलत 7 बाइट्स बचाए

(s,n)->(1|>n=>i->(s.len*(n-i)/2)*" "+s.sub(/./g,"$&"*i)).asLines

इसे ऑनलाइन आज़माएं! मैं थोड़े में स्पष्टीकरण जोड़ूंगा

व्याख्या

(string, count)->(
   1 |> count          // 1..count, the amount of rep/char per line
     => i -> (         // Map over the range       
        s.len*(n-i)/2  // Calculate amount of spaces and repeat by it.
     )*" "
     + s.sub(/./g,"$&"*i) // replace each character, duplicate the amount of times `*i`
).asLines              // return the above joined with newlines

कोई बात नहीं! मुझे आश्चर्य है कि अगर चेडर के पास एक centerफ़ंक्शन है जिसका उपयोग आप कर सकते हैं जैसे कि मेरे पास मेरे रूबी का जवाब है, क्योंकि वह संभावित रूप से बाइट्स को भी बचा सकता है।
मूल्य इंक


5

जावा 8, 188 186 185 183 181 173 बाइट्स

s->n->{String r="";int l=s.length()/2,x=l*n,i,j;for(i=0;i++<n;r+="\n"){r+=s.format("%"+x+"s",r).substring(0,x-i*l);for(char c:s.toCharArray())for(j=0;j++<i;r+=c);}return r;}

बग-फिक्स के कारण -2 बाइट्स (185 → 183) (इसके n+1बजाय यह लाइनों को आउटपुट कर रहा था n)। अक्सर ऐसा नहीं होता है कि बग-फिक्स बाइट्स को बचाता है। :)
-2 बाइट्स (183 → 181) @ ओलिवियरग्रेगायर के लिए धन्यवाद

स्पष्टीकरण:

इसे यहाँ आज़माएँ।

s->n->{                          // Method with String and integer parameter and String return-type
  String r="";                   //  Return-String
  int l=s.length()/2,            //  Halve the length of the input-String
      x=l*n,                     //  Halve the length * the input integer
      i,j;                       //  Some temp integers
  for(i=0;i++<n;                 //  Loop (1) `n` times
      r+="\n"){                  //    And after every iteration, add a new-line
    r+=s.format("%"+x+"s",r).substring(0,x-i*l);
                                 //   Add the appropriate trailing spaces
    for(char c:s.toCharArray())  //   Loop (2) over the characters of the String
      for(j=0;j++<i;r+=c);       //    And repeat each one more than in the previous row
                                 //   End of loop (2) (implicit / single-line body)
  }                              //  End of loop (1)
  return r;                      //  Return the result-String
}                                // End of method

1
यदि आप पहले अपने ints को स्थानांतरित करते हैं, तो आप r="",q=s.format("%"+x+"s",r)2 बाइट्स को बचाने की घोषणा कर सकते हैं । सिर्फ दो बाइट्स के लिए बहुत सारे कदम :(
ओलिवियर ग्रेजायर

1
@ OlivierGrégoire धन्यवाद! s.format("%"+x+"s",r)सीधे उपयोग करके मैं आपके गोल्फ के बाद 8 और बाइट्स बचा सकता हूं। :)
केविन क्रूज़सेन

4

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

करी सिंटैक्स में इनपुट लेता है (string)(height)। एक अग्रणी newline शामिल है।

s=>g=(n,p=`
`)=>n?g(n-1,p+' '.repeat(s.length/2))+p+s.replace(/./g,c=>c.repeat(n)):''

डेमो


अंतिम पंक्ति से पहले प्रमुख व्हाट्सएप हैं, क्या इसकी अनुमति है?
चार्ली

@CarlosAlejo ओह, यह एक अंतिम मिनट के अद्यतन का एक अनपेक्षित पक्ष-प्रभाव था। अब तय हो गया। यह रिपोर्ट करने के लिए धन्यवाद!
अरनुलद

4

चारकोल , 19 बाइट्स

F⁺¹N«J±×ι÷Lη²ιFηFικ

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण:

F⁺¹N«       for (Plus(1, InputNumber())) {

हमें बार- 1..nबार लाइनों की आवश्यकता है । इसे प्राप्त करने का सबसे आसान तरीका है लूप 0 से n तक, क्योंकि लूप 0 मूल रूप से एक नो-ऑप है।

J±×ι÷Lη²ι       JumpTo(Negate(Times(i, IntDivide(Length(h), 2))), i);

कर्सर को स्थिति में रखें ताकि परिणामस्वरूप रेखा केंद्रित हो।

FηFικ           for (h) for (i) Print(k);

और यह है कि प्रत्येक वर्ण को बार- iबार छापना कितना सरल है।


4

अजगर 2 , 75 77 बाइट्स

s,n=input()
for i in range(n):print''.join(c*-~i for c in s).center(len(s)*n)

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


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

3
वाह, वहाँ एक centerबेसिन है? मुझे वास्तव में कभी-कभी डॉक्स पढ़ने की आवश्यकता है: P
HyperNeutrino

गलत आउटपुट देता है; इसमें n-1पंक्तियों के बाद एक प्रमुख रिक्त रेखा होती है।
मूल्य इंक

आपके पास अंतिम पंक्ति से पहले कुछ प्रमुख व्हाट्सएप भी हैं, क्या इसकी अनुमति है?
चार्ली

@FryAmTheEggman जो सच हो सकता है, लेकिन यह अभी भी 9पिरामिड की लाइनों को वापस कर रहा है जब इनपुट है 10...
मूल्य इंक


4

जावास्क्रिप्ट, 105 बाइट्स

(s,n)=>Array(N=n).fill().reduce(a=>a+'\n'+' '.repeat(--n*s.length/2)+s.replace(/./g,_=>_.repeat(N-n)),'')

कुछ वर्षों के बाद, स्ट्रेच पागल वापस आ गया है, उम्मीद है कि इस बार थोड़ा अधिक शिक्षित होगा।


आपके पास प्रत्येक पंक्ति पर बहुत सारे प्रमुख स्थान हैं।
शैगी

यहाँ इस विधि का एक 99 बाइट ईएस 8 संस्करण है, जिसे मैं आपके देखने से पहले आया था: s=>n=>[...Array(x=n)].reduce(a=>a+'\n'.padEnd(--x*s.length/2+1)+s.replace(/./g,c=>c.repeat(n-x)),'')- आपको 'एस को बैकटिक्स और \nशाब्दिक न्यूलाइन के साथ बदलना होगा ।
शैगी

3

हास्केल , 79 73 69 बाइट्स

  • सहेजे गए 4 बाइट्स निम्मी के लिए धन्यवाद
s#n=unlines[(' '<$[1,3..(n-m)*length s])++((<$[1..m])=<<s)|m<-[1..n]]

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


1
आप एक कदम में उपयोग करते हैं .., तो आप ड्रॉप कर सकते हैं div: (' '<$[1,3..(n-m)*length s])
नीमी


3

APL (Dyalog) , 33 31 बाइट्स

2 बाइट्स अनावश्यक कोष्ठक को हटाकर @ZacharyT के लिए धन्यवाद

{↑((' '/⍨(.5×≢⍵)×⍺-⊢),⍵/⍨⊢)¨⍳⍺}

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

व्याख्या

सही तर्क स्ट्रिंग है और बाएं तर्क संख्या है।

{↑((' '/⍨(.5×≢⍵)×⍺-⊢),⍵/⍨⊢)¨⍳⍺}
                             ⍳⍺      Range 1 .. 
  (                                For each element (let's call it i) do:
                      ⍵/⍨⊢          Replicate ⍵ i times
  (                 ),               Concatenated with
         (.5×≢⍵)×⍺-⊢                (⍺-i)×(len(⍵)×0.5)
   ' '/⍨                                spaces
 ↑                                    Convert the resulting array to a 2D matrix

क्या आपको परिंदों की ज़रूरत है ⍺-⊢?
ज़ाचरी

@ZacharyT तुम सही हो, मुझे उनकी आवश्यकता नहीं है। धन्यवाद :)
कृतिका लिथोस

3

एसडब्ल्यूआई प्रोलॉग, 398 बाइट्स

यह सबसे कॉम्पैक्ट समाधान नहीं है (शायद कहीं-कहीं निर्मित प्रक्रियाओं का उपयोग करने के बजाय पहिया को फिर से मजबूत करना), लेकिन यह काम करने के लिए प्रेरित करता है।

w(0).
w(X):-write(' '),Y is X-1,w(Y).
s(S,N):-string_length(S,X),Y is div(X,2)*N,w(Y).
d(S,N,R):-atom_chars(S,A),e([],A,N,R).
e(B,[H|T],N,R):-l(B,H,N,I),e(I,T,N,R).
e(B,[],_,B).
a([], L, L).
a([H|T],L,[H|R]):-a(T,L,R).
l(L,_,0,L).
l(L,I,N,R):-M is N-1,l(L,I,M,T),a(T,[I],R).
o([]):-nl.
o([H|T]):-write(H),o(T).
p(S,N):-p(S,N,N).
p(_,0,_).
p(S,N,L):-Q is N-1,p(S,Q,L),d(S,N,R),W is L-N,s(S,W),o(R).

परीक्षा:

?- p("o-o  o-o",10).
                                    o-o  o-o
                                oo--oo    oo--oo
                            ooo---ooo      ooo---ooo
                        oooo----oooo        oooo----oooo
                    ooooo-----ooooo          ooooo-----ooooo
                oooooo------oooooo            oooooo------oooooo
            ooooooo-------ooooooo              ooooooo-------ooooooo
        oooooooo--------oooooooo                oooooooo--------oooooooo
    ooooooooo---------ooooooooo                  ooooooooo---------ooooooooo
oooooooooo----------oooooooooo                    oooooooooo----------oooooooooo
true .

स्पष्टीकरण:

w और s प्रमुख स्थानों की उचित मात्रा लिखते हैं:

w(0).
w(X):-write(' '),Y is X-1,w(Y).
s(S,N):-string_length(S,X),Y is div(X,2)*N,w(Y).

d वर्णों के "दोहराव" का प्रबंधन करता है और यह पुनरावर्ती सुविधा है:

//d(String, Number of repetitions, Result)
d(S,N,R):-atom_chars(S,A),e([],A,N,R).
e(B,[H|T],N,R):-l(B,H,N,I),e(I,T,N,R).
e(B,[],_,B).

a और l परिणाम में संलग्न हैं (हो सकता है कि वहाँ एक निर्मित प्रक्रिया मौजूद हो?):

a([], L, L).
a([H|T],L,[H|R]):-a(T,L,R).
l(L,_,0,L).
l(L,I,N,R):-M is N-1,l(L,I,M,T),a(T,[I],R).

o आउटपुट बनाता है:

o([]):-nl.
o([H|T]):-write(H),o(T).

और अंत में पी है मुख्य विधि :

p(S,N):-p(S,N,N).
p(_,0,_).
//p(String, Current level, Number of levels) :- go to the bottom, create pyramide level, write whitespaces, write the level
p(S,N,L):-Q is N-1,p(S,Q,L),d(S,N,R),W is L-N,s(S,W),o(R).

3

जाप , 20 + 1 = 21 19 + 1 = 20 14 बाइट्स

अगर कोई अनुमति नहीं है, तो लाइनों की एक सरणी - 2 बाइट्स जोड़ें।

Võ@®pXÃù°V*UÊz

झसे आज़माओ


व्याख्या

      :Implicit input of string U & integer V
Võ    :Generate an array of integers from 1 to V, inclusive
@     :Map over the elements of the array
®     :Map over the characters of U
p     :Repeat the current character ...
X     :  X (the current element) times.
à    :End string mapping.
ù     :Left pad each line with spaces to length...
°V    :  V incremented by one...
*     :  multiplied by...
UÊ    :  the length of U...
z     :  divided by 2.
      :Implicit output of resulting array.

मुझे लगता है कि आप बदल सकते हैं SpUlकरने के लिए ... प्रतीक्षा, कोई बात नहीं :( आप हालांकि बदल कर एक बाइट बचा सकता है (V-Xके साथ XnVअगर मैं गलत नहीं हूँ,।
ETHproductions

ओह, हाँ, के बारे में भूल गया n; धन्यवाद @ETHproductions
झबरा

2

PHP, 113 बाइट्स:

for([,$s,$n]=$argv;$i++<$n;)for(print($f=str_pad)("
",($n-$i)*strlen($s)/2+!$p=0);~$c=$s[$p++];)echo$f($c,$i,$c);

इसे ऑनलाइन चलाएं php -nr '<code>' '<string>' <N>या परीक्षण करें

टूट - फूट

# import input, loop $i from 1 to $n
for([,$s,$n]=$argv;$i++<$n;)
    # 1. print newline and padding, reset $p
    for(print($f=str_pad)("\n",($n-$i)*strlen($s)/2+!$p=0);
    # 2. loop $c through string
        ~$c=$s[$p++];)
        # print repeated character
        echo$f($c,$i,$c);

2

CJam , 36 बाइट्स

l_,2/:T;]li:F{[_U)*zSTFU)-**\N]\}fU;

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


PPCG में आपका स्वागत है! अच्छा पहला सबमिशन :)
HyperNeutrino

@ हायपरनेटिनो ठीक है, मुझे लगता है कि मेरा कोड अनुकूलित से बहुत दूर है, लेकिन ... धन्यवाद। :)
सिगुजा

4
लेकिन इसमें STFU :-D
लुइस मेंडेन

2

टी-एसक्यूएल, 223 बाइट्स

DECLARE @ char(99),@n INT,@i INT=1,@j INT,@p varchar(max)SELECT @=s,@n=n FROM t
R:SET @j=0SET @p=SPACE((@n-@i)*len(@)/2)C:SET @j+=1SET @P+=REPLICATE(SUBSTRING(@,@j,1),@i)IF @j<LEN(@)GOTO C
PRINT @p SET @i+=1IF @i<=@n GOTO R

इनपुट पूर्व मौजूदा तालिका के माध्यम से है टी के साथ कॉलम रों और n , हमारे आईओ मानकों के अनुसार

समझाने के लिए ज्यादा नहीं, यह एक बहुत ही सीधा-सादा नेस्टेड लूप है, @iपंक्तियों के लिए और @jस्ट्रिंग के पात्रों के माध्यम से चलने के लिए जो इस प्रकार हैं REPLICATED @i:

DECLARE @ char(99),@n INT,@i INT=1,@j INT,@p varchar(max)
SELECT @=s,@n=n FROM t
R:
    SET @j=0
    SET @p=SPACE((@n-@i)*len(@)/2) 
    C:
        SET @j+=1
        SET @P+=REPLICATE(SUBSTRING(@,@j,1),@i)
    IF @j<LEN(@)GOTO C
    PRINT @p
    SET @i+=1
IF @i<=@n GOTO R

2

आर , 125 95 बाइट्स

function(S,n)for(i in 1:n)cat(rep(' ',(n-i)/2*nchar(S)),rep(el(strsplit(S,'')),e=i),sep="",'
')

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

स्पष्टीकरण:

यह बहुत सीधा है, स्ट्रिंग को विभाजित करना और तत्वों को iहर बार दोहराना rep(s,e=i)( eकम है each) के रूप में हम लूप करते हैं। मुश्किल हिस्सा है rep('',(n-i)/2*length(s)+1)। यह पैडिंग स्ट्रिंग है, लेकिन यह खाली तारों का एक गुच्छा है। मुझे 1 जोड़ने की आवश्यकता है क्योंकि अन्यथा परिणाम character(0)एक शून्य-लंबाई वेक्टर है, और cat, जो डिफ़ॉल्ट रूप से अपने तत्वों को रिक्त स्थान के साथ अलग करता है, अंतिम पंक्ति misaligns।


1

मैथेमेटिका, 97 बाइट्स

(c=Characters@#;T=Table;Column[T[""<>T[""<>T[c[[i]],j],{i,Length@c}],{j,#2}],Alignment->Center])&


इनपुट

["ऊ ऊ", 10]


1

Tcl, 143 142 141 138 बाइट्स

proc p s\ n {set p [expr [set w [expr [string le $s]/2]]*$n];time {incr p $w;puts [format %$p\s [regsub -all . $s [append r \\0]]]} $n;cd}

परीक्षा:

% p "o-o  o-o" 5
                o-o  o-o
            oo--oo    oo--oo
        ooo---ooo      ooo---ooo
    oooo----oooo        oooo----oooo
ooooo-----ooooo          ooooo-----ooooo

टिप्पणी: प्रक्रिया के अंत में "सीडी" समय के परिणाम को पिरामिड के नीचे प्रिंट करने से रोकता है, लेकिन वर्तमान निर्देशिका को बदल देता है - एक पक्ष प्रभाव जो स्पष्ट रूप से निषिद्ध नहीं है।

एक बाइट को बचाने के लिए एक संकेत के लिए सर्गिओल का धन्यवाद .... और एक और बाइट को बचाने के लिए एक और संकेत।

सहेजे गए अन्य 3 बाइट्स के लिए (tcl चैट पर) पहलू के लिए धन्यवाद!


1

स्विफ्ट, 232 बाइट्स

शायद बेहतर हो सकता है, लेकिन मेरे पास रिफ्लेक्टर के लिए ज्यादा समय नहीं है।

यह उत्तर स्विफ्ट 4 का उपयोग करता है, इसलिए इसे वर्तमान में ऑनलाइन नहीं चलाया जा सकता है।

var p:(String,Int)->String={s,i in let r=(1...i).map{n in return s.map{return String(repeating:$0,count:n)}.joined()};return(r.map{return String(repeating:" ",count:(r.last!.count-$0.count)/2)+$0}as[String]).joined(separator:"\n")}

1

लोगो, 97 95 बाइट्स

to f :s :n
for[i 1 :n][repeat(:n-:i)/2*count :s[type "\ ]foreach :s[repeat :i[type ?]]pr "]
end

FMSLogo दुभाषिया पर कोड का प्रयास करें।

एक फ़ंक्शन को परिभाषित करें fजो दो इनपुट लेता है, :sऔर :n, फिर परिणाम प्रिंट करें।


1

जावा 8, 164 148 बाइट्स

s->n->{String o="";for(int i=0,m,j;i++<n;){o+="\n";for(m=0;m++<(n-i)*s.length()/2;)o+=" ";for(char c:s.toCharArray())for(j=0;j++<i;)o+=c;}return o;}

स्पष्टीकरण:

s->n->{
    String o = "";                                  //empty output string
    for (int i = 0, m, j; i++ < n; ) {              //for each row
        o += "\n";                                  //append a new line
        for (m = 0; m++ < (n - i)*s.length()/2; )   //for amount of spaces = inversed row_number * half length
            o += " ";                               //append a space
        for (char c : s.toCharArray())              //for each char of the string
            for (j = 0; j++ < i; )                  //row_number times
                o+=c;                               //append char
    }
    return o;
}

1

जंग, 107 बाइट्स

|a:&str,b|for i in 0..b{println!("{:^1$}",a.split("").map(|s|s.repeat(i+1)).collect::<String>(),a.len()*b)}

playpen लिंक

एक अनाम फ़ंक्शन को परिभाषित करता है जो मानक आउटपुट के लिए वांछित पैटर्न को प्रिंट करते हुए, एक स्ट्रिंग स्लाइस और संख्या लेता है। यह मानता है कि स्ट्रिंग स्लाइस में केवल ASCII वर्ण शामिल हैं, लेकिन चुनौती कभी भी निर्दिष्ट नहीं करती है कि पूर्ण यूनिकोड समर्थन आवश्यक है। यूनिकोड के लिए सही होने के लिए 117 बाइट की आवश्यकता होगी:

|a:&str,b|for i in 0..b{println!("{:^1$}",a.split("").map(|s|s.repeat(i+1)).collect::<String>(),a.chars().count()*b)}

स्पष्टीकरण बल्कि सरल है:

|a:&str,b|                             // arguments, compiler can't infer the type of a unfortunately
    for i in 0..b {                    // iterate from row 0 to row b - 1
        println!(
            "{:^1$}",                  // print a line containing arg 0, centered with the width specified as arg 1
            a.split("")                // split the string into slices of one character
                .map(|s|s.repeat(i+1)) // for each slice, yield a string containing row+1 times that slice
                .collect::<String>(),  // concatenate each of the strings into one string
            a.len()*b                  // total length should be the length of the string times the amount of rows
        )
    }

1

SOGL V0.12 , 8 बाइट्स

∫dč*∑}¹╚

यह कोशिश करो!

स्पष्टीकरण:

∫dč*∑}¹╚
∫    }    iterate over 1..input, pushing counter
 d        push the variable D, which sets itself to the next input as string
  č       chop into characters - a vertical array
   *      multiply horizontally by the counter
    ∑     join the array together
      ¹   wrap all that in an array
       ╚  center horizontally

मुझे अपना पुराना उत्तर यहां अपडेट करने का मन नहीं हुआ क्योंकि यह एक अलग विधि का उपयोग करता है और एक नई (चुनौती से कम) सुविधा का उपयोग करता है -


1

पायथन 2 , 79 77 बाइट्स

s,n=input();m=n
while m:m-=1;print' '*(m*len(s)/2)+''.join(i*(n-m)for i in s)

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

संपादित करें: -2 बाइट्स शिष्टाचार @FlipTack


आप चारों ओर चौकोर कोष्ठक हटा सकते हैं [i*(n-m)for i in s], जैसा .joinकि एक जनरेटर लेने में सक्षम है, जो आपको दो बाइट्स प्रदान करना चाहिए।
फ्लिपकैक

0

एक्सेल VBA, 98 बाइट्स

बेनामी VBE तत्काल विंडो फ़ंक्शन जो तब [A1]से स्ट्रिंग के रूप में इनपुट लेता है और int से [B1]VBE तत्काल विंडो में आउटपुट करता है

For i=1To[B1]:?Spc([Len(A1)/2]*([B1]-i));:For j=1To[Len(A1)]:?String(i,Mid([A1],j,1));:Next:?:Next
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.