In số tam giác


25

Cho một số N, xuất ra một tam giác vuông góc NxN, trong đó mỗi hàng ichứa đầy các số tới i.

Thí dụ

n = 0

(không có đầu ra)

n = 4

1
1 2
1 2 3
1 2 3 4

n = 10

1
1 2
1 2 3
.
.
.
1 2 3 4 5 6 7 8 9 10

(không cần căn chỉnh)

n = N

1
1 2
1 2 3
.
.
.
1 2 3 4 .... N

Không có dấu cách ở cuối mỗi dòng.

Số byte ít nhất sẽ thắng và sơ hở tiêu chuẩn không được phép.


Đầu ra có thể là một danh sách các số lồng nhau không?
xem

Điều gì sẽ là hành vi cho n = 0 và cho n> 9?
freekvd

@Sieg Chắc chắn, miễn là đầu ra là chính xác.
Tân WS

@caletvd cho 0 không có đầu ra, vì n> 9 không yêu cầu định dạng đặc biệt
Tan WS

Ah chết tiệt, bạn đã phá vỡ trình của tôi. Sửa lỗi càng sớm càng tốt
xem

Câu trả lời:


17

Joe , 5 3 byte (+2 hoặc +3 cho -tcờ)

Chà, rõ ràng là tôi đã không tận dụng hết tiềm năng của Joe. Điều này có thể trở lại khi lần đầu tiên tôi đăng bài này.

\AR

Ở đây, Rcung cấp phạm vi từ 0 đến n, độc quyền. Sau đó \Alấy tiền tố liên tiếp của nó ( Alà hàm nhận dạng). Ví dụ:

Với -tcờ (lưu ý: đây là đầu ra tiêu chuẩn ngay cả khi không có cờ):

   (\AR)5
0
0 1
0 1 2
0 1 2 3
0 1 2 3 4
   \AR5
0
0 1
0 1 2
0 1 2 3
0 1 2 3 4
   \AR2
0
0 1
   \AR1
0
   \AR0

Không có nó:

   \AR5
[[0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4]]
   (\AR)5
[[0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4]]
   \AR2
[[0], [0, 1]]
   \AR1
[[0]]
   \AR0
[]

Các quy tắc đã thay đổi một chút. Mã cũ của tôi không hoạt động chính xác với N = 0. Ngoài ra, bây giờ đầu ra có thể chỉ là một danh sách lồng nhau, vì vậy -tcó thể được loại bỏ.

1R1+R

Bây giờ, Rncung cấp một phạm vi từ 0 đến n, độc quyền. Nếu được 0, nó sẽ trả về một danh sách trống. 1+thêm 1 cho mọi yếu tố của phạm vi đó. 1Ránh xạ các giá trị đến phạm vi từ 1 đến x. Liats trống, khi được ánh xạ, trả về danh sách trống.

Ví dụ đầu ra:

   1R1+R0
[]
   1R1+R5
[[1], [1, 2], [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5]]

Cập nhật: Tôi chỉ nhận thấy một cái gì đó. Hàm tự động ánh xạ để xếp hạng 0 phần tử. Ví dụ sau đây được chạy với -tcờ.

   1R1+R3 5 8
1
1 2
1 2 3

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8

Cũ: 5 byte (có -tcờ)

1R1R

Đây là một hàm ẩn danh lấy một số, tạo một danh sách từ 1 đến N ( 1Rn) và ánh xạ các giá trị đó đến phạm vi trước, đưa ra phạm vi từ 1 đến x cho mỗi mục từ phạm vi 1 đến N.

Các -tlá cờ cho đầu ra như một bảng J-như thế nào.

   1R1R5
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

Lưu ý: ngôn ngữ rất mới và chưa hoàn chỉnh, nhưng phiên bản mới nhất đã được phát hành trước thử thách này.


4
Vì vậy, J không đủ để có lợi thế về các thách thức dựa trên mảng? : D
Trình tối ưu hóa

4
@Optimizer Tối ưu hóa rất quan trọng.
xem

4
Đột nhiên, câu trả lời được bình chọn nhiều nhất của tôi là câu tôi dành ít thời gian nhất. Sự bất công.
xem

1
Tôi đoán Joe không phải là Joe trung bình của bạn ...
Justin

10

Python 3, 48 45 byte

f=lambda n:n and[f(n-1),print(*range(1,n+1))]

Hoan hô cho tác dụng phụ.


2
Lồng nhau hư vô. Bây giờ đó là xoắn.
xem

Đó là một mẹo tiện lợi: đặt hàm trước khi printthực hiện prints theo thứ tự ngược lại.
xnor

8

APL, 5

⍪⍳¨⍳⎕

tạo một vectơ 1..n và cho mỗi phần tử một vectơ khác như vậy.

Sau đó tạo một cột trong tất cả các vectơ. Điều này tránh được vấn đề với khoảng trống theo sau.

Dùng thử trên tryapl.org


Giải pháp cũ hơn:

{⎕←⍳⍵}¨⍳⎕

Tạo một vectơ 1..n

{⎕ ←} là một hàm xuất ra cho mỗi phần tử (¨) một vectơ 1..n trên một dòng riêng biệt

Điều này không thể được thử trên tryapl.org, vì ⎕ ← không hoạt động ở đó.


Không nên có dấu cách trong bất kỳ dòng nào.
Randomra

ah cảm ơn bạn, tôi đã bỏ lỡ một. Sẽ sửa sớm
Moris Zucca

Tôi biết APL sẽ là một giải pháp
Conor O'Brien

Ôi Chúa ơi, đôi mắt của tôi đang nhìn thấy gì
Codefun64

6

J, 27 byte

J không tốt với đầu ra số không có mảng. Hàm này tạo ra một chuỗi được định dạng đúng từ các số.

   ;@(<@,&LF@":@:>:@:i.@>:@i.)

   (;@(<@,&LF@":@:>:@:i.@>:@i.)) 4
1
1 2
1 2 3
1 2 3 4

Hãy thử trực tuyến tại đây.


Bạn cũng có thể sử dụng ]\@i.để có được;@(<@,&LF@":@:>:@:]\@i.)
seequ

6

PHP, 53 byte

Chỉnh sửa 2: Ismael Miguel đề nghị đọc từ đầu vào thay vì xác định hàm, vì vậy điểm hiện tại là 53 byte cho PHP:

for($a=1;@$i++<$n=$argv[1];$a.=" ".($i+print"$a\n"));

Và một lần nữa, nó có thể được cải thiện nếu PHP được cấu hình để bỏ qua lỗi (52 byte):

for($a=1;$i++<$n=$argv[1];$a.=" ".($i+print"$a\n"));
for($a=1;$i++<$n=$_GET[n];$a.=" ".($i+print"$a\n"));

Chỉnh sửa: Austin đề xuất một phiên bản 60 byte trong các bình luận:

function f($n){for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));}

Điều này có thể được cải thiện nếu chúng tôi không hiển thị lỗi PHP (59 byte):

function f($n){for($a=1;$i++<$n;$a.=" ".($i+print"$a\n"));}

$alưu trữ dòng tiếp theo sẽ được in và mỗi lần nó được in một khoảng trắng và số tiếp theo ( printluôn trả về 1) được nối với nó.


Hàm đệ quy (65 byte):

function f($n){$n>1&&f($n-1);echo implode(' ',range(1,$n))."\n";}
function f($n){$n>1&&f($n-1);for(;@$i++<$n;)echo$i,' ';echo"\n";}   // Using @ to hide notices.

Hàm đệ quy ngắn hơn, với báo cáo lỗi bị vô hiệu hóa (64 byte):

function f($n){$n>1&&f($n-1);for(;$i++<$n;)echo$i,' ';echo"\n";}

Ngay cả chức năng đệ quy ngắn hơn, với báo cáo lỗi bị vô hiệu hóa và một dòng trống trước đầu ra thực (62 byte):

function f($n){$n&&f($n-1);for(;$i++<$n;)echo$i,' ';echo"\n";}

Chỉ để cho vui, không đệ quy fucntions:

function f($n){for($i=0;$i<$n;print implode(' ',range(1,++$i))."\n");}    // 70 bytes
function f($n){for(;@$i<$n;print implode(' ',range(1,@++$i))."\n");}      // 68 bytes, hiding notices.
function f($n){for(;$i<$n;print implode(' ',range(1,++$i))."\n");}        // 66 bytes, error reporting disabled.

2
45 byte:for($a=1;@$i<$n;$a.=" ".(@++$i+print"$a\n"));
Austin

@Austin: Tôi đã đọc trong một nhận xét rằng mã phải là chương trình đọc toàn bộ từ đầu vào hoặc chức năng. Thủ thuật rất hay, nó có thể được cải thiện bằng một bit / byte: for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));(44 byte)
Benoit Esnard

À, vậy thì tôi cho rằng bạn sẽ làm function f($n){for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));}, đó là 60 byte.
Austin

Thật. Bạn có ổn không nếu tôi chỉnh sửa câu trả lời của mình để thêm giải pháp của bạn?
Benoit Esnard

1
for($a=1;$i++<$n=$_GET[n];$a.=" ".($i+print"$a\n"));-> thử cái này (mã đầy đủ, sử dụng tham số url nvới số)
Ismael Miguel

5

CJam, 13 12 byte

ri{),:)S*N}/

Cách thức hoạt động :

ri{       }/     "Run the block input number of times with iteration index from 0 to N-1";
   )             "Increment the iteration index (making it 1 to N)";
    ,            "Get an array of 0 to iteration index";
     :)          "Increment each of the above array members by 1";
       S*        "Join all above array numbers with space";
         N       "Add a new line. After all iterations, things are automatically printed";

Dùng thử trực tuyến tại đây


4

Bình thường, 9 byte

VQjdr1hhN

Thực sự nghĩ rằng điều này có thể được thực hiện ngắn hơn, nhưng nó không có vẻ như vậy.

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

            Q = input()
VQ          For N in [0, 1, ..., Q-1]:
    r1hhN       create list [1, ..., N+1+1-1]
  jd            print joined with spaces

1
Một thay thế 9 : VQaYhNjdY. Nếu chỉ atrả về danh sách, thì thứ gì đó VQjdaYhNsẽ là 8.
Sp3000

2
asử dụng ngắn gọn để trả về danh sách nối thêm.
Tối ưu hóa

Tôi không quen thuộc với Pyth, vậy bạn có thể giải thích tại sao N+1+1-1không?
xem

1
@Sieg rlà hàm phạm vi Python, do đó -1 ( r1Ntạo danh sách [1, 2, ..., N-1]). Nhưng trong lần lặp thứ N của vòng lặp, tôi muốn danh sách [1, 2, ..., N+1], do đó tôi cần thêm 2vào N. r1hhNdịch trực tiếp sang range(1, N+1+1). Một khả năng khác sẽ là r1+N2( range(1, N+2)).
Jakube

Hoặc thậm chí mhdhN, nhưng đó là một cách tiếp cận hoàn toàn khác.
Jakube

4

JavaScript (ES6) 49 52

Một nhiệm vụ đơn giản như vậy, tôi tự hỏi liệu điều này có thể được thực hiện ngắn hơn trong JS (Cập nhật: có, sử dụng đệ quy)

Đệ quy 49

f=n=>alert((r=w=>n-i++?w+'\n'+r(w+' '+i):w)(i=1))

Iteraive 52

f=n=>{for(o=r=i=1;i++<n;o+='\n'+r)r+=' '+i;alert(o)}

Tôi có thể kiểm tra cái này ở đâu? Tôi dường như không thể tìm thấy bất kỳ sân chơi ES6 nào chấp nhận điều này
Kristoffer Sall-Storgaard

@ KristofferSall-Storgaard Firefox hỗ trợ ES6 được mặc định. Bảng điều khiển Firefox.
Tối ưu hóa

4

Java, 85 84 byte

Đây là ngắn đáng ngạc nhiên trong Java.

void a(int a){String b="";for(int c=0;c++<a;System.out.println(b+=(c>1?" ":"")+c));}

Thụt lề:

void a(int a){
    String b="";
    for(int c=0;
        c++<a;
        System.out.println(
                b+=(c>1?" ":"")+c
        ));
}

1 byte nhờ Bigtoes / Geobits


Bạn có thể lưu một bằng cách di chuyển b+=...vào println(b+=...).
Geobits

3

Prolog - 119

h(N):-setof(X,(between(1,N,K),setof(Y,between(1,K,Y),X)),[L]),k(L),nl,fail.
k([A|B]):-write(A),(B=[];write(" "),k(B)).

3

Con trăn 2 - 62 54 65 byte

def f(n):
 for x in range(n):print' '.join(map(str,range(1,x+2)))

Số nphải được đưa ra làm đầu vào cho chương trình, không được khởi tạo trong một biến.
Zgarb

Cảm ơn đã gợi ý. Không chắc chắn về điều đó.
pepp

2
Xin lỗi, tôi nên đã rõ ràng hơn. Ý tôi là bạn phải thực sự xác định Nbằng cách làm N=input()hoặc một cái gì đó tương tự, để chương trình của bạn có thể được chạy như vậy. Đây là một cuộc thảo luận về chủ đề này.
Zgarb

Vì vậy, điều này sẽ đúng, phải không?
pepp

Có vẻ tốt bây giờ!
Zgarb

3

J, 9 ký tự

Như một động từ ngầm, đơn âm.

[:":\1+i.
  • i. y- các số từ 0đến y - 1.
  • 1 + i. y- các số từ 1đến y.
  • ": y- vectơ ybiểu diễn dưới dạng một chuỗi.
  • ":\ y- mỗi tiền tố được ybiểu diễn dưới dạng một chuỗi.
  • ":\ 1 + i. y- mỗi tiền tố của các số từ 1để ybiểu diễn dưới dạng một ma trận của các nhân vật.

Bây giờ thì khá thông minh. +1
xem

Đây là J-esque nhiều hơn nhưng nó không vi phạm quy tắc về việc không có dấu cách trên mỗi dòng?
dặm

@miles Thật vậy! Bất cứ điều gì khác sẽ rất phức tạp.
FUZxxl

3

> <> (Cá) , 40 37 + 3 = 40 byte

&1>:&:&)?;1\
(?v:n" "o1+>}:{:@
ao\~1+

Một lần nữa,> <> thực hiện tốt ở một bài tập in số khác. Chạy với -vcờ cho đầu vào, ví dụ

py -3 fish.py -v 4

Giải trình

&               Put n in register
1               Push 1 (call this "i")

[outer loop]

:&:&)?          If i > n...
;                 Halt
1                 Else push 1 (call this "j")

[inner loop]

}:{:@(?         If j > i...
~1+ao             Pop j, print newline, increment i and go to start of outer loop
:n" "o1+          Else print j, print a space, increment j and go to start of inner loop

3

C (không có vòng lặp, yeah!) - 72 byte

b(n,c){if(n){b(n-1,32);printf("%d%c",n,c);}}r(n){if(n){r(n-1);b(n,10);}}

Điều này tạo ra một chức năng r(n)có thể được sử dụng theo cách này:

main(){ r(5); }

Xem nó trong hành động, ở đây trên guidespoint.com

Nó đòi hỏi một vài thủ thuật dễ dàng giải thích. Tôi nghĩ rằng nó có thể được cải thiện rất nhiều.


1
Trên thực tế, nó là 75 byte, không phải 74. Tuy nhiên, bạn có thể cắt nó xuống 72 byte bằng cách thay thế '' bằng 32 và '\ n' bằng 10:b(n,c){if(n){b(n-1,32);printf("%d%c",n,c);}}r(n){if(n){r(n-1);b(n,10);}}
FatalS ngủ

1
Thủ thuật khá hay, cảm ơn!
A. Breust 30/03/2015

Cảm ơn! Tôi đã làm hết sức mình để nâng bạn lên trong hạng C, nhưng tôi không thể làm bất cứ điều gì ngắn hơn! Vì vậy, tôi quyết định rút ngắn của bạn thay vào đó.
FatalSadd 30/03/2015

b(n,c){n&&b(n-1,32)^printf("%d%c",n,c);}r(n){n&&r(n-1)^b(n,10);} Wandbox
o79y

2

Con trăn 2 - 72

>>> def p(N):print'\n'.join(' '.join(map(str,range(1,i+2)))for i in range(N))
... 
>>> p(5)
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

Đối với câu trả lời trên trang web này, bạn nên viết một chương trình hoặc chức năng hoàn chỉnh. Và bạn nên in kết quả ra thiết bị xuất chuẩn hoặc trả về chúng từ một hàm. N nên được đọc từ đầu vào hoặc được lấy làm tham số hàm, không được xác định trước dưới dạng biến.
jimmy23013

@ user23013 OK, đã sửa!
Kasramvd

Định nghĩa hàm cần được bao gồm trong số byte, vì vậy tôi không nghĩ đây là 61. Có lẽ bạn nên gọi hàm này một cách ngắn gọn, như thế p. Trên một lưu ý khác, bạn có thể xóa hai khoảng trắng - một giữa print'\n'và giữa giữa )))for.
Sp3000

@ Sp3000 OK, cảm ơn đã chú ý! đã sửa!;)
Kasramvd

72:def p(N):print'\n'.join(' '.join(map(str,range(1,i+2)))for i in range(N))
Seequ

2

Perl, 28

Đọc tham số từ stdin.

@x=1..$_,print"@x
"for 1..<>

Từ dòng lệnh:

perl -E'$,=$";say 1..$_ for 1..<>'

nhưng bây giờ tôi không biết làm thế nào để đếm số đó (có thể từ 25 đến 29).


1

Con trăn

import string
N,s=int(input()),list(string.digits)
for i in range(1,N+1):
    print(' '.join(s[1:i+1]))

1
Điều này có thất bại không nếu N> = 10?
xem

@Sieg Có bạn đúng. Tôi vừa học Python, đang tìm cách chuyển đổi danh sách int thành danh sách các chuỗi.
bacchusbeale

63 byte: for i in range(int(input())):print(' '.join("123456789"[:i+1]))- Lưu ý rằng các chuỗi được coi là danh sách.
xem


1

Clip , 16

Jm[ijkw,1iwS},1n

Giải trình

J                   .- join with newlines                           -.
 m[i        },1n    .- map numbers from 1 to numeric value of input -.
    jkw   wS        .- join with spaces                             -.
       ,1i          .- numbers from 1 to index                      -.

1

Đi, 93 81 78 93 90 byte

func r(n int)(s string){s=string(n+48);if n!=1{s=r(n-1)+" "+s};println(s);return}

Hiện tại không có người

func r(n int) (s string) {
    // Convert n to a string, we do not have to initialize s since
    // we hijacked the return value.
    // Numbers in the ascii table starts at 48
    s = string(n | 48)
    // Unless we are on our last iteration, we need previous iterations,
    // a space and our current iteration
    if n != 1 {
        // Collect the result of previous iteration for output
        s = r(n-1) + " " + s
    }
    println(s)
    // We can use a naked return since we specified the
    // name of our return value in the function signature
    return
}

Nếu chúng ta cần xử lý N> 9, chúng ta có thể sử dụng các giá trị sau ở mức 78 byte, tuy nhiên nó yêu cầu nhập fmtgói.

func r(n int)(s string){s=Sprint(n);if n!=1{s=r(n-1)+" "+s};Println(s);return}

Nếu chúng tôi bao gồm báo cáo nhập khẩu, bây giờ tôi sẽ quay lại từ đầu 93 92 90 byte

import."fmt";func r(n int)(s string){s=Sprint(n);if n>1{s=r(n-1)+" "+s};Println(s);return}

Kiểm tra trực tuyến tại đây: http://play.golang.org/p/BWLQ9R6ilw

Phiên bản có fmttại đây: http://play.golang.org/p/hQEkLvpiqt


Tôi không chắc tôi cảm thấy thế nào về chuỗi ký tự, nhưng bất kỳ nỗ lực nào để biến nó thành một mảng byte chỉ khiến nó dài hơn
Kristoffer Sall-Storgaard

Vấn đề chính tôi thấy là nó không hoạt động cho n> 9. Bạn có thể lưu một byte bằng cách thay đổi !=thành >, mặc dù.
Geobits

@Bigtoes, đã được sửa ngay bây giờ, tôi không biết liệu tôi có nên đếm importlời tuyên bố hay không
Kristoffer Sall-Storgaard

Tôi biết họ được tính cho các ngôn ngữ mà tôi quen thuộc hơn, vì vậy rất có thể là có. Sucks, tôi biết :)
Geobits

1

ZX / Sinclair BASIC - 39 byte

ZX Basic sử dụng 1 byte cho mỗi từ khóa (tất cả các từ viết hoa), vì vậy giúp giảm kích thước byte xuống một chút ...

1 INPUT n:FOR i=1 TO n:FOR j=1 TO i:PRINT j;" ";:NEXT j:PRINT:NEXT i

Sử dụng n = 8

nhập mô tả hình ảnh ở đây


1
Tốt đẹp. Nhưng ZX cơ bản sử dụng thêm 6 byte ẩn cho mỗi chữ số (một mẹo phổ biến là VAL("1")(6 byte là VAL là 1) bắt nguồn từ 1(7 byte))
edc65

1

R, 28

for(i in 1:scan())print(1:i)

Đầu ra không chính xác cho giá trị đầu vào là 0. Ngoài ra, không rõ liệu hàng đầu [1]trên mỗi dòng có vi phạm thông số kỹ thuật hay không.
Alex A.

@AlexA. nếu bạn nhìn kỹ vào câu hỏi, bạn sẽ thấy bình luận của tôi hỏi hành vi nào sẽ là n = 0. Nhưng cảm ơn đã chỉ cho tôi đi đúng hướng!
freekvd

Tôi thấy bình luận. Có điều là cái này không in gì cho 0, nó in 1; 1 0. (Giả vờ ;là ngắt dòng.)
Alex A.

Bạn có thể muốn xem xét sử dụng cat(1:i,"\n"). Mặc dù nó dài hơn một chút print(1:i), nhưng nó không bao gồm một hàng đầu [1]trên mỗi dòng.
Alex A.

1

TI-Basic, 28 byte

Input N
For(I,1,N
randIntNoRep(1,N->L1
SortA(L1
Disp L1
End

1
Điều này không xuất ra như định dạng chỉ ra; thay vào đó, mảng được hiển thị, dấu ngoặc và tất cả, trên màn hình chính.
lirtosiast

1

C, 89 ký tự

// 90 characters
f(int n){int a=1,b;for(;n--;++a){for(b=0;b<a;++b)printf("%c%d",(!!b)*' ',b+1);puts("");}}

Để loại bỏ nhầm lẫn về puts("");. Điều này chỉ đơn giản là in một ký tự dòng mới (như được thấy ở đây ):

Lưu ý rằng đặt không chỉ khác với fputs ở chỗ nó sử dụng thiết bị xuất chuẩn làm đích, mà nó còn tự động thêm một ký tự dòng mới ở cuối (mà fput không có).

Tôi đã hiểu nó ngắn hơn một chút với thuật toán java của @ TheBestOne:

// 89 characters
f(int a){char b[999]="",*p=b+1;int c=0;for(;a--&&(sprintf(b,"%s %d",b,++c)&&puts(p)););}

puts("");Không lam gi cả. Bạn có thể sử dụng char b[999]=""thay vì char b[999]={0}để lưu 1 ký tự.
mch

2
puts("");in một ký tự dòng mới.
Felix Bytow

1

Perl: 34 ký tự

print"@$_\n"for map[1..$_],1..$_;

Mã này nhận được số đầu vào được cung cấp thông qua biến đặc biệt $_.


1
Hầu hết các dấu ngoặc là dư thừa ở đây: print"@$_\n"for map[1..$_],1..$_cũng hoạt động.
nutki 13/03/2015

Tôi điều chỉnh mã.
Felix Bytow

1

C # - 94 byte

Được viết dưới dạng một hàm ẩn danh trả về một chuỗi, dường như không được phép bởi spec.

n=>String.Join("\n\n",Enumerable.Range(1,n).Select(l=>String.Join(" ",Enumerable.Range(1,l))))

Đây là phiên bản không được chỉnh sửa (các bình luận được đọc theo thứ tự BDCA):

n =>
    String.Join("\n\n",                    //...then join it together with newlines.
        Enumerable.Range(1, n).Select(l => //For each l from 1 to n, ...
                String.Join(" ",              //...and join it with spaces, ...
                    Enumerable.Range(1, l)    //...get the range from 1 to l, ...

1

Bash + coreutils, 26 byte

seq $1|sed "x;G;s/\n/ /;h"
  • seq chỉ cần tạo các số từ 1 đến n
  • sed lưu toàn bộ đầu ra cho một dòng nhất định trong không gian giữ và sau đó nối thêm dòng tiếp theo vào nó.

1

Haskell, 62 57 byte

e=enumFromTo 1
f=putStr.unlines.map(unwords.map show.e).e

Phong cách không có điểm. Ví dụ sử dụng:

Prelude> f 5
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

Làm e=enumFromTo 1tiết kiệm 7 byte.
Zgarb

@Zgarb: Cảm ơn, nhưng nếu tôi trao đổi enumFromTo 1, tôi cũng phải đặt tên cho hàm chính, vì vậy đó là 5 byte. Nếu không có tên, nó sẽ là một letcấu trúc:let e=enumFromTo 1 in (putStr.unlines.map(unwords.map show.e).e) 5
nimi

1

Toán học, 32

Print@Row[Range@i," "]~Do~{i,#}&

1
Thế còn TableForm[Range/@Range@#]&?
Martin Ender

1
Ngắn Grid[Range/@Range@#]&
gọn

Và nó thậm chí trông tốt hơn. :) (Tôi tiếp tục quên về Grid.)
Martin Ender

Nhưng tôi không chắc chắn nếu không có dấu cách ở cuối mỗi dòng.
alephalpha

Oh điểm tốt. :(
Martin Ender

1

Scala, 73 65 62 byte

(n:Int)=>print(1 to n map(1 to _ mkString " ") mkString "\n")

Bị đánh cắp

def printNumberTriangle(n: Int): Unit = {
  def rowString(m: Int): String = 1.to(m).mkString(" ")
  print(1.to(n).map(rowString).mkString("\n"))
}
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.