একটি পিরামিড আউটপুট (বা হাইওয়ে)


39

একটি দৈর্ঘ্য এবং একটি ধনাত্মক পূর্ণসংখ্যা এন সহ একটি খালি খালি স্ট্রিং দেওয়া, এর উচ্চতা উপস্থাপন করে, নীচের নিয়মগুলি ব্যবহার করে একটি পিরামিড রচনা করুন:

পিরামিডে এন-খালি লাইন থাকা উচিত; চলমান নিউলাইনগুলি অনুমোদিত। প্রতি 1 <= i <= n এর জন্য, আই-তম লাইনে প্রতিটি পৃথক চরিত্রের সাথে স্ট্রিং থাকতে হবে যাতে একই জায়গায় i বার পুনরাবৃত্তি হয়; abcd 3 বার পুনরাবৃত্তি যেমন aaabbbcccddd হয়ে যায়। প্রতিটি লাইনের প্যাডিং স্পেসগুলি কেন্দ্র করে হওয়া উচিত যাতে প্রতিটি লাইনের মাঝখানে উল্লম্বভাবে সারিবদ্ধ হয়। প্রতিটি লাইনের শেষে ট্রেলিং স্পেসের অনুমতি রয়েছে। আপনার এক শীর্ষস্থানীয় নিউলাইনও থাকতে পারে তবে প্রথম লাইনের আগে অন্য কোনও সাদা জায়গা থাকতে পারে।

ইনপুট স্ট্রিংটি প্যালিনড্রোম হওয়ার নিশ্চয়তা নেই।

পরীক্ষা ক্ষেত্রে

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
স্যান্ডবক্স পোস্ট ব্যবহারকারী 42649 দ্বারা তৈরি করা হয়েছে, এটি মুছে ফেলা না হওয়া পর্যন্ত এটি আমার অ্যাকাউন্ট ছিল।
হাইপারনিউটারিনো

এই প্রশ্নের কোনও ফাংশনের আউটপুট কি স্ট্রিংগুলির তালিকা হতে পারে, প্রতিটি লাইনকে প্রতিনিধিত্ব করে, বা নতুন লাইনে যোগ দেওয়া উচিত?
notjagan

7
একটি পিরামিড আউটপুট আপনি অবশ্যই একটি হাইওয়ে মানে !
লুইস মেন্ডো

দেখতে অ্যাজটেক পিরামিডের মতো!
কিউব্রেট

3
@QBrute Na। একটি
গোয়া'ল্ড

উত্তর:


12

05 এ বি 1 ই , 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
@ জোনাথন অ্যালান আমার এড়ানো যায় এমন ভুলের ফ্রিকোয়েন্সি কিছুটা হলেও নেতিবাচকতার দাবি রাখে।
ম্যাজিক অক্টোপাস উরন

12

05 এ বি 1 , 11 বাইট

F²γN>×J}».C

05AB1E এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!


এটি 168 এর উপরে ইনপুটগুলির সাথে চমত্কারভাবে যেতে শুরু করে otherwise অন্যথায় দুর্দান্ত!
tuskiomi

@ কারাসোকম্পুটিং »স্পেস দ্বারা অভ্যন্তরীণ অ্যারেগুলিতে যোগদান করে। এটির পরিবর্তে 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

সি # (.নেট কোর) , 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 টি বাইট সংরক্ষণ করা হয়েছে!

1
আপনি প্রথম বন্ধনী অপসারণ করে দুটি বাইট সংরক্ষণ করতে পারেন (n-i-1)*s.Length/2। এবং আমি আপনার পরীক্ষার কেসগুলি পছন্দ করি। +1 :)
কেভিন ক্রুইজসেন

10
ಠ_ಠতীব্রতর হয়
ম্যাজিক অক্টোপাস উরন

1
বাধ্যতামূলক " ~iসমতূল্য -i-1যাতে আপনি পরিবর্তন করে একটি বাইট সংরক্ষণ করতে পারবেন," (n-i-1)করার (n+~i)
মান কালি

1
এবং আপনি s=>n=>...
তরকারিটি

1
@ কার্লোস আলেজো পৃথক সম্পাদনা পোস্ট করার জন্য দুঃখিত তবে আপনি new string(' '..."".PadLeft(...
এটির

7

চেডার , 71 64 বাইট

@ ভালুআইঙ্ককে 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)। কোনও বাগ-ফিক্স বাইট সংরক্ষণ করে এমনটি প্রায়শই ঘটে না। :)
-২ বাইট (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
@ অলিভিয়ারগ্রোওয়ের ধন্যবাদ! s.format("%"+x+"s",r)সরাসরি ব্যবহার করে আমি আপনার গল্ফের পরে আরও 8 টি বাইট সংরক্ষণ করতে সক্ষম হয়েছি। :)
কেভিন ক্রুইজসেন

4

জাভাস্ক্রিপ্ট (ES6), 85 বাইট

বাক্য গঠন সিনট্যাক্সে ইনপুট নেয় (string)(height)। একটি শীর্ষস্থানীয় নিউলাইন অন্তর্ভুক্ত।

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

ডেমো


শেষ লাইনের আগে নেতৃস্থানীয় হোয়াইটস্পেস রয়েছে, এটি কি অনুমোদিত?
চার্লি

@ কার্লোস আলেজো ওহ, এটি সর্বশেষ-মুহুর্তের আপডেটের অযৌক্তিক পার্শ্ব-প্রতিক্রিয়া ছিল। এখন স্থির। এটি রিপোর্ট করার জন্য ধন্যবাদ!
আর্নল্ড

4

কাঠকয়লা , 19 বাইট

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

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

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

আমাদের বারবার লাইন দরকার 1..n। এটি অর্জনের সবচেয়ে সহজ উপায় হ'ল 0 থেকে এন পর্যন্ত লুপ করা, কারণ লুপ 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)

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


ডাং, আমার প্রায় একই উত্তর ছিল, তবে আমি নিশ্চিত নই যে কোনও ক্রিয়াকলাপ লাইনের একটি তালিকা ফিরিয়ে দিতে পারে কিনা। যদি তা হয় তবে আমি আমার আলাদা উত্তর হিসাবে পোস্ট করব, তবে তা না পারলে এটি পোস্টের সাথে খুব মিল হবে।
notjagan

3
বাহ, একটি centerবিল্টিন আছে? আমার মাঝে মাঝে
ডক্সটি

ভুল আউটপুট ফেরত; এটির একটি শীর্ষস্থানীয় ফাঁকা রেখা রয়েছে যার পরে n-1সারি থাকবে।
মান কালি

শেষ লাইনের আগে আপনারও কিছু নেতৃস্থানীয় হোয়াইটস্পেস রয়েছে, এটি কি অনুমোদিত?
চার্লি

@ ফ্রাইআম দ্য এজিগম্যান যা সত্য হতে পারে 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 বাইট

s#n=unlines[(' '<$[1,3..(n-m)*length s])++((<$[1..m])=<<s)|m<-[1..n]]

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


1
আপনি যদি একটি ধাপে ব্যবহার করেন তাহলে .., আপনি ড্রপ করতে পারেন div: (' '<$[1,3..(n-m)*length s])
নিমি


3

এপিএল (ডায়ালগ) , 33 31 বাইট

অপ্রয়োজনীয় প্রথম বন্ধনী অপসারণ করে জ্যাচারিটিকে 2 বাইট গল্ফ করেছে

{↑((' '/⍨(.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

আপনার চারপাশে পেরেনস দরকার ⍺-⊢?
জাকারি

@ জাচারি আপনি ঠিক বলেছেন, আমার তাদের দরকার নেই। ধন্যবাদ :)
ক্রিটসি লিথোস

3

এসডাব্লুআই প্রোলগ, 398 বাইট

এটি সর্বাধিক কমপ্যাক্ট সমাধান নয় (সম্ভবত কোথাও অন্তর্নির্মিত পদ্ধতি ব্যবহারের পরিবর্তে চাকাটি পুনরায় উদ্ভাবন করা) নয়, তবে এটি কাজ করে ers

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(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 অক্ষরের "সদৃশ" পরিচালনা করে এবং e এটি পুনরাবৃত্তিযোগ্য সুবিধা:

//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([]):-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; ধন্যবাদ @ ইথ প্রডাকশনস।
শেগি

2

পিএইচপি, 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

সিজেম , 36 বাইট

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

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


পিপিসিজিতে আপনাকে স্বাগতম! চমৎকার প্রথম জমা :)
হাইপারনিউটারিনো

@ হাইপারনিট্রিনো ঠিক আছে, আমার মনে হচ্ছে আমার কোডটি অনুকূলিত হওয়া থেকে অনেক দূরে, তবে ... ধন্যবাদ। :)
সিগুজা

4
তবে এতে রয়েছে এসটিএফইউ :
লুইস মেন্ডো

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

ইনপুট পূর্ব বিদ্যমান টেবিল মারফত টি দিয়ে কলাম গুলি এবং এন , আমাদের আই মান অনুযায়ী

বোঝানোর মতো বেশি নয়, এটি @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="",'
')

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

ব্যাখ্যা:

এটি বেশ সহজবোধ্য বিভাজন STRING এবং উপাদান পুনরায় এর iবার প্রতিটি rep(s,e=i)( eসংক্ষেপে হয় each) আমরা লুপ। কৌতুকপূর্ণ অংশ rep('',(n-i)/2*length(s)+1)। এটি প্যাডিং স্ট্রিং, তবে এটি খালি স্ট্রিংগুলির একটি গোছা। আমাকে 1 যুক্ত করতে হবে কারণ অন্যথায় ফলাফলটি character(0)শূন্য দৈর্ঘ্যের ভেক্টর এবং catডিফল্টরূপে তার উপাদানগুলিকে স্পেসগুলির সাথে পৃথক করে চূড়ান্ত রেখাকে ভুল করে দেয়।


1

গণিত, 97 বাইট

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


ইনপুট

["oo oo", 10]


1

টিসিএল, 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 বাইট সংরক্ষণের জন্য দিকটি (টিসিএল চ্যাটে) ধন্যবাদ!


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

এফএমএসলোগো দোভাষীর কোড ব্যবহার করে দেখুন।

একটি ফাংশন সংজ্ঞা দিন 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)}

প্লেপেন লিঙ্ক

একটি অনামী ফাংশন সংজ্ঞায়িত করে যা স্ট্রিং স্লাইস এবং নম্বর নেয়, স্ট্যান্ডার্ড আউটপুটে ওয়ান্ট প্যাটার্নটি মুদ্রণ করে। এটি ধরে নেওয়া হয় যে স্ট্রিং স্লাইসে কেবল ASCII অক্ষর রয়েছে তবে চ্যালেঞ্জটি কখনই নির্দিষ্ট করে না যে সম্পূর্ণ ইউনিকোড সমর্থন প্রয়োজনীয় necess ইউনিকোডের জন্যও সঠিক হতে 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

এসওজিএল ভি0.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)

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

সম্পাদনা: -২ বাইটস সৌজন্যে @ ফ্লিপট্যাক


আপনি চারপাশে বর্গাকার বন্ধনীগুলি মুছে ফেলতে পারেন [i*(n-m)for i in s], যেমনটি .joinজেনারেটর নিতে সক্ষম, যা আপনাকে দুটি বাইট আটকে দেবে।
ফ্লিপট্যাক

0

এক্সেল ভিবিএ, 98 বাইট

বেনামে VBE তাত্ক্ষণিক উইন্ডো ফাংশন যা ইনপুটটি স্ট্রিং হিসাবে ইনপুট নেয় [A1]এবং [B1]তারপরে ভিবিই তাত্ক্ষণিক উইন্ডোতে আউটপুট দেয়

For i=1To[B1]:?Spc([Len(A1)/2]*([B1]-i));:For j=1To[Len(A1)]:?String(i,Mid([A1],j,1));:Next:?:Next
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.