Xuất ra một Kim tự tháp (hoặc đường cao tốc)


39

Cho một chuỗi không rỗng, có độ dài chẵn và số nguyên dương n, biểu thị chiều cao của nó, tạo một hình chóp bằng các quy tắc sau:

Kim tự tháp nên chứa n dòng không trống; dòng mới được phép. Với mỗi 1 <= i <= n, dòng thứ i nên chứa chuỗi với mỗi ký tự riêng lẻ được lặp lại tại chỗ i lần; abcd lặp lại 3 lần như vậy trở thành aaabbbcccddd. Mỗi dòng nên được căn giữa với khoảng trắng đệm sao cho giữa của mỗi dòng được căn chỉnh theo chiều dọc. Không gian lưu trữ ở cuối mỗi dòng được cho phép. Bạn cũng có thể có tối đa một dòng mới hàng đầu nhưng không có khoảng trắng nào khác trước dòng đầu tiên.

Chuỗi đầu vào không được đảm bảo là một palindrom.

Trường hợp thử nghiệm

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
Sandbox Post được tạo bởi user42649, đó là tài khoản của tôi cho đến khi nó bị xóa.
HyperNeutrino

Đầu ra cho một hàm trong câu hỏi này có thể là một danh sách các chuỗi, mỗi chuỗi đại diện cho một dòng hoặc nó có nên được nối bởi các dòng mới không?
notjagan

7
Xuất ra một kim tự tháp Bạn chắc chắn có nghĩa là một đường cao tốc !
Luis Mendo

Trông giống như một kim tự tháp Aztec!
QBrute

3
@QBrute Na. Được thực hiện bởi một người Ấn Độ :)
theblitz ngày

Câu trả lời:


12

05AB1E , 9 byte

γ².D)ƶJ.C

Hãy thử trực tuyến!


γlà, trong một thời gian ngắn, lấy cảm hứng từ câu trả lời của Adnan; Nhưng Scũng sẽ làm việc.


γ          # 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.

Tôi không thể tin ai đó thực sự đánh giá thấp bài đăng sai của bạn: /
Jonathan Allan

1
@Jonathan ALLan tần suất của những sai lầm có thể tránh được của tôi đáng bị tiêu cực ở một mức độ nào đó.
Bạch tuộc ma thuật Urn

12

05AB1E , 11 byte

F²γN>×J}».C

Sử dụng mã hóa 05AB1E . Hãy thử trực tuyến!


Nó bắt đầu trở nên sôi nổi với đầu vào trên 168. nếu không thì tuyệt vời!
tuskiomi

@carusocomputing »tham gia các mảng bên trong bằng khoảng trắng. Thay thế nó bằng cách Jlàm việc (và tôi nghĩ bạn nên đăng nó như một câu trả lời khác).
Ad Nam

À! Có phải nó luôn luôn như vậy? Nếu vậy, tuyệt, nếu không tôi phải bỏ lỡ điều đó. Cảm ơn sẽ làm.
Bạch tuộc ma thuật Urn

8

Thạch , 14 13 byte

LH×Ḷ}Ṛ⁶ẋżxЀY

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

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

C # (.NET Core) , 139 137 136 130 byte

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))))

Hãy thử trực tuyến!

Trả về một phép liệt kê của strings với các dòng của bản vẽ. Sau khi tham gia kết quả là như thế này:

                        _  _
                    ಠಠ__ಠಠ    ಠಠ__ಠಠ
                ಠಠಠ___ಠಠಠ      ಠಠಠ___ಠಠಠ
            ಠಠಠಠ____ಠಠಠಠ        ಠಠಠಠ____ಠಠಠಠ
        ಠಠಠಠಠ_____ಠಠಠಠಠ          ಠಠಠಠಠ_____ಠಠಠಠಠ
    ಠಠಠಠಠಠ______ಠಠಠಠಠಠ            ಠಠಠಠಠಠ______ಠಠಠಠಠಠ
ಠಠಠಠಠಠಠ_______ಠಠಠಠಠಠಠ              ಠಠಠಠಠಠಠ_______ಠಠಠಠಠಠಠ
  • 2 byte được lưu nhờ Kevin Cruijssen!
  • Lưu 1 byte nhờ vào Ink Ink!
  • 6 byte được lưu nhờ LiefdeWen!

1
Bạn có thể lưu hai byte bằng cách xóa dấu ngoặc đơn tại (n-i-1)*s.Length/2. Và tôi thích trường hợp thử nghiệm của bạn. +1 :)
Kevin Cruijssen

10
ಠ_ಠtăng cường
Bạch tuộc ma thuật Urn

1
Bắt buộc " ~itương đương với -i-1", vì vậy bạn có thể lưu một byte bằng cách thay đổi (n-i-1)thành (n+~i).
Mực giá trị

1
và bạn có thể sử dụng currying s=>n=>...cho một byte khác
LiefdeWen

1
@CarlosAlejo Xin lỗi vì đã đăng các chỉnh sửa riêng biệt nhưng bạn cũng có thể thay thế new string(' '...bằng"".PadLeft(...
LiefdeWen

7

Cheddar , 71 64 byte

Đã lưu 7 byte nhờ @ValueInk

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

Hãy thử trực tuyến! Tôi sẽ thêm giải thích một chút

Giải trình

(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

Không vấn đề gì! Tôi tự hỏi nếu Cheddar có một centerchức năng mà bạn có thể sử dụng như tôi có trong câu trả lời Ruby của tôi, bởi vì điều đó cũng có khả năng lưu byte.
Mực giá trị


5

Java 8, 188 186 185 183 181 173 byte

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 byte (185 → 183) do sửa lỗi (nó xuất ra n+1các dòng thay vì n). Không thường xuyên xảy ra việc sửa lỗi lưu byte. :)
-2 byte (183 → 181) nhờ @ OlivierGrégoire

Giải trình:

Hãy thử nó ở đây.

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
Nếu bạn di chuyển số nguyên của mình trước, bạn có thể khai báo r="",q=s.format("%"+x+"s",r)để lưu 2 byte. Rất nhiều di chuyển chỉ với hai byte :(
Olivier Grégoire

1
@ OlivierGrégoire Cảm ơn! Bằng cách sử dụng s.format("%"+x+"s",r)trực tiếp, tôi có thể tiết kiệm thêm 8 byte sau khi chơi gôn. :)
Kevin Cruijssen

4

JavaScript (ES6), 85 byte

Đưa đầu vào theo cú pháp currying (string)(height). Bao gồm một dòng mới hàng đầu.

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

Bản giới thiệu


Có những khoảng trắng hàng đầu trước dòng cuối cùng, điều đó có được phép không?
Charlie

@CarlosAlejo Ồ, đó là tác dụng phụ ngoài ý muốn của bản cập nhật vào phút cuối. Bây giờ đã sửa. Cảm ơn đã báo cáo này!
Arnauld

4

Than , 19 byte

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Giải trình:

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

Chúng ta cần dòng lặp đi lặp lại 1..n. Cách dễ nhất để đạt được điều này là lặp từ 0 đến n, vì vòng 0 về cơ bản là không có op.

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

Định vị con trỏ sao cho đường kết quả được căn giữa.

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

Và đây là cách in đơn giản mỗi lần lặp lại ký tự i.


4

Python 2 , 75 77 byte

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

Hãy thử trực tuyến!


Dang, tôi đã có câu trả lời gần như tương tự, nhưng tôi không chắc liệu một hàm có thể trả về một danh sách các dòng hay không. Nếu vậy, tôi sẽ đăng của tôi dưới dạng một câu trả lời riêng biệt, nhưng nếu không, nó sẽ quá giống với bài đăng.
notjagan

3
Wow, có một centernội dung? Đôi khi tôi thực sự cần đọc tài liệu: P
HyperNeutrino

Trả về đầu ra sai; cái này có một dòng trống hàng đầu theo sau bởi n-1các hàng.
Mực giá trị

Bạn cũng có một số khoảng trắng hàng đầu trước dòng cuối cùng, điều đó có được phép không?
Charlie

@FryAmTheEggman có thể đúng, nhưng nó vẫn trả về 9các dòng kim tự tháp khi đầu vào là 10...
Ink Ink


4

Javascript, 105 byte

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

Sau một vài năm nghỉ ngơi, Stretch Maniac đã trở lại, hy vọng lần này được giáo dục nhiều hơn một chút.


Bạn có quá nhiều không gian hàng đầu trên mỗi dòng.
Xù xì

Đây là phiên bản ES8 99 byte của phương pháp này mà tôi đã nghĩ ra trước khi tôi thấy bạn: s=>n=>[...Array(x=n)].reduce(a=>a+'\n'.padEnd(--x*s.length/2+1)+s.replace(/./g,c=>c.repeat(n-x)),'')- bạn sẽ cần thay thế 's bằng backticks và \nbằng một dòng mới.
Xù xì


3

APL (Dyalog) , 33 31 byte

2 byte được chơi golf nhờ @ZacharyT bằng cách xóa các dấu ngoặc đơn không cần thiết

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

Hãy thử trực tuyến!

Giải trình

Đối số bên phải là chuỗi và đối số bên trái là số.

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

Bạn có cần các parens xung quanh ⍺-⊢?
Zacharý

@ZacharyT Bạn nói đúng, tôi không cần chúng. Cảm ơn :)
Kritixi Lithos

3

SWI Prolog, 398 byte

Nó không phải là giải pháp nhỏ gọn nhất (có thể ở đâu đó phát minh lại bánh xe thay vì sử dụng các quy trình tích hợp), nhưng nó sẽ hoạt động.

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).

Kiểm tra:

?- 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 .

Giải trình:

ws viết số lượng không gian hàng đầu thích hợp:

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 quản lý "sao chép" các ký tự và e là cơ sở đệ quy:

//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).

al nối vào kết quả (có thể tồn tại một thủ tục được xây dựng?):

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 tạo đầu ra:

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

và cuối cùng pphương thức chính :

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

Japt , 20 + 1 = 21 19 + 1 = 20 14 byte

Xuất ra một mảng các dòng - thêm 2 byte nếu điều đó không được phép.

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

Kiểm tra nó


Giải trình

      :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.

Tôi nghĩ rằng bạn có thể thay đổi SpUlthành ... chờ đợi, đừng bận tâm :( Bạn có thể lưu một byte bằng cách thay thế (V-Xbằng XnV, nếu tôi không nhầm.
ETHproductions

Ồ, vâng, quên về n; cảm ơn @ETHproductions.
Xù xì

2

PHP, 113 byte:

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

Chạy với php -nr '<code>' '<string>' <N>hoặc kiểm tra nó trực tuyến .

phá vỡ

# 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

T-SQL, 223 byte

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

Đầu vào là thông qua bảng t có sẵn với các cột sn , theo các tiêu chuẩn IO của chúng tôi .

Không có gì nhiều để giải thích, đó là một vòng lặp lồng nhau khá đơn giản, sử dụng @icho các hàng và @jđể đi qua các ký tự của chuỗiREPLICATED @i thời gian:

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

R , 125 95 byte

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

Hãy thử trực tuyến!

Giải trình:

Nó khá đơn giản, tách chuỗi và lặp lại các phần tử imỗi lần rep(s,e=i)( eviết tắt là each) khi chúng ta lặp. Phần khó khăn là rep('',(n-i)/2*length(s)+1). Đây là chuỗi đệm, nhưng nó là một chuỗi các chuỗi trống. Tôi cần thêm 1 vì nếu không thì kết quả là character(0), một vectơ có độ dài bằng không, và cattheo mặc định, phân tách các phần tử của nó với các khoảng trắng, làm sai lệch dòng cuối cùng.


1

Toán học, 97 byte

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


đầu vào

["oo oo", 10]


1

Tcl, 143 142 141 138 byte

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}

Kiểm tra:

% 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

Lưu ý: "cd" ở cuối quy trình ngăn kết quả của thời gian được in ra bên dưới kim tự tháp, nhưng thay đổi thư mục hiện tại - một tác dụng phụ không bị cấm rõ ràng.

Cảm ơn sergiol về một gợi ý để lưu một byte .... và một gợi ý khác để lưu thêm một byte.

Nhờ vào khía cạnh (trên trò chuyện tcl) để lưu thêm 3 byte!


1

Swift, 232 byte

Có lẽ có thể tốt hơn, nhưng tôi không có nhiều thời gian để cấu trúc lại.

Câu trả lời này sử dụng Swift 4, vì vậy hiện tại nó không thể chạy trực tuyến.

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

LOGO, 97 95 byte

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

Hãy thử mã trên trình thông dịch FMSLogo.

Xác định một hàm fcó hai đầu vào :s:nsau đó in kết quả.


1

Java 8, 164 148 byte

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

Giải trình:

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

Rust, 107 byte

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

liên kết playpen

Xác định một hàm ẩn danh lấy một lát cắt chuỗi và số, in mẫu mong muốn thành đầu ra tiêu chuẩn. Nó giả định rằng lát cắt chuỗi chỉ chứa các ký tự ASCII, nhưng thách thức không bao giờ chỉ định rằng hỗ trợ unicode đầy đủ là cần thiết. Để chính xác cho unicode cũng sẽ cần 117 byte:

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

Giải thích khá đơn giản:

|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 byte

∫dč*∑}¹╚

Hãy thử nó ở đây!

Giải trình:

∫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

Tôi không cảm thấy muốn cập nhật câu trả lời cũ của mình ở đây vì nó sử dụng một phương pháp khác và sử dụng tính năng mới (er hơn thách thức) -


1

Python 2 , 79 77 byte

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

Hãy thử trực tuyến!

Chỉnh sửa: -2 byte lịch sự @FlipTack


Bạn có thể loại bỏ các dấu ngoặc vuông xung quanh [i*(n-m)for i in s], vì .joinnó có khả năng lấy một trình tạo, sẽ cho bạn hai byte.
FlipTack

0

VBA Excel, 98 byte

Hàm cửa sổ tức thời VBE ẩn danh lấy đầu vào là chuỗi từ [A1]và int từ [B1]đó xuất ra cửa sổ ngay lập tức VBE

For i=1To[B1]:?Spc([Len(A1)/2]*([B1]-i));:For j=1To[Len(A1)]:?String(i,Mid([A1],j,1));:Next:?:Next
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.