Cetak segitiga angka

25

Diberi nomor N, hasilkan NxN segitiga siku-siku, di mana setiap baris idiisi dengan angka hingga i.

Contoh

n = 0

(tidak ada output)

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

(tidak perlu penyelarasan)

n = N

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

Tidak ada spasi tambahan di akhir setiap baris.

Jumlah byte terkecil menang, dan celah standar tidak diizinkan.

Tan WS
sumber
Bisakah output menjadi daftar angka bersarang?
seequ
Apa yang seharusnya menjadi perilaku untuk n = 0, dan untuk n> 9?
freekvd
@ Sieg Tentu, selama output sudah benar.
Tan WS
@freekvd untuk 0 tidak ada output, untuk n> 9 tidak ada format khusus yang diperlukan
Tan WS
Ah sial, kamu melanggar kiriman saya. Memperbaiki ASAP
seequ

Jawaban:

17

Joe , 5 3 byte (+2 atau +3 untuk -tflag)

Yah, rupanya saya tidak memanfaatkan potensi penuh Joe. Ini mungkin kembali ketika saya pertama kali memposting ini.

\AR

Di sini, Rberikan kisaran dari 0 hingga n, eksklusif. Kemudian \Amengambil awalan yang berurutan (itu Aadalah fungsi identitas). Contoh:

Dengan -tflag (catatan: sekarang ini adalah output standar bahkan tanpa flag):

   (\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

Tanpa itu:

   \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
[]

Aturan sedikit berubah. Kode lama saya tidak berlaku dengan N = 0. Juga, sekarang keluaran bisa jadi hanya daftar yang disarangkan, jadi -tbisa dijatuhkan.

1R1+R

Sekarang, Rnberikan rentang dari 0 hingga n, eksklusif. Jika diberikan 0, ia mengembalikan daftar kosong. 1+menambahkan 1 ke setiap elemen dari rentang itu. 1Rmemetakan nilai ke rentang dari 1 hingga x. Empty liats, saat dipetakan, mengembalikan daftar kosong.

Contoh output:

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

Pembaruan: Saya baru saja memperhatikan sesuatu. Fungsi secara otomatis memetakan untuk memberi peringkat 0 elemen. Contoh berikut dijalankan dengan -tbendera.

   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

Lama: 5 byte (dengan -tbendera)

1R1R

Ini adalah fungsi anonim yang mengambil angka, membuat daftar dari 1 hingga N ( 1Rn) dan memetakan nilai-nilai tersebut ke rentang sebelumnya, memberikan kisaran dari 1 hingga x untuk setiap item dari rentang 1 hingga N.

The -tflag memberikan output sebagai meja J-seperti.

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

Catatan: bahasa ini sangat baru dan tidak lengkap, tetapi versi terbaru dirilis sebelum tantangan ini.

seequ
sumber
4
Jadi J tidak cukup untuk memiliki keuntungan pada tantangan berbasis array? : D
Optimizer
4
@Optimizer Optimizing penting.
seequ
4
Tiba-tiba, jawaban saya yang paling banyak dipilih adalah jawaban yang paling sedikit saya habiskan. Ketidakadilan.
seequ
1
Kurasa Joe bukan rata-rata Joe ...
Justin
10

Python 3, 48 45 byte

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

Hore untuk efek samping.

Sp3000
sumber
2
Ketiadaan bersarang. Nah, itu bengkok.
seequ
Itu trik bagus: menempatkan fungsi sebelum printuntuk menjalankan prints dalam urutan terbalik.
xnor
8

APL, 5

⍪⍳¨⍳⎕

membuat vektor 1..n dan untuk setiap elemen vektor lain.

Kemudian ⍪ membuat kolom dari semua vektor. Ini menghindari masalah dengan trailing blank.

Cobalah di tryapl.org


Solusi yang lebih lama:

{⎕←⍳⍵}¨⍳⎕

Membuat vektor 1..n

{⎕ ← ⍳⍵} adalah fungsi yang menghasilkan untuk setiap (¨) elemen vektor 1..n pada baris terpisah

Sayangnya, yang ini tidak dapat dicoba di tryapl.org, karena ⎕ ← tidak berfungsi di sana.

Moris Zucca
sumber
Seharusnya tidak ada spasi tambahan di baris mana pun.
randomra
ah terima kasih, saya merindukan yang itu. Akan segera diperbaiki
Moris Zucca
Saya tahu APL akan menjadi solusi
Conor O'Brien
Ya Tuhan, apa yang saya lihat
Codefun64
6

J, 27 byte

J tidak baik dengan output numerik non-array. Fungsi ini menciptakan string yang diformat dengan benar dari angka-angka.

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

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

Cobalah online di sini.

randomra
sumber
Anda juga bisa menggunakan ]\@i.untuk mendapatkan;@(<@,&LF@":@:>:@:]\@i.)
seequ
6

PHP, 53 Bytes

Sunting 2: Ismael Miguel menyarankan agar membaca dari input alih-alih mendefinisikan fungsi, sehingga skor sekarang 53 byte untuk PHP:

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

Dan sekali lagi, ini dapat ditingkatkan jika PHP dikonfigurasi untuk mengabaikan kesalahan (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"));

Sunting: Austin menyarankan versi 60 byte dalam komentar:

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

Yang dapat ditingkatkan jika kami tidak menampilkan kesalahan PHP (59 byte):

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

$amenyimpan baris berikutnya yang akan dicetak, dan setiap kali dicetak spasi dan angka berikutnya ( printselalu kembali 1) digabungkan dengannya.


Fungsi rekursif (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.

Fungsi rekursif yang lebih pendek, dengan pelaporan kesalahan dinonaktifkan (64 byte):

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

Fungsi rekursif yang lebih pendek, dengan pelaporan kesalahan dinonaktifkan dan baris kosong sebelum output nyata (62 byte):

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

Hanya untuk bersenang-senang, fucntions non-rekursif:

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.
Benoit Esnard
sumber
2
45 byte:for($a=1;@$i<$n;$a.=" ".(@++$i+print"$a\n"));
Austin
@Austin: Saya sudah membaca dalam komentar bahwa kode harus berupa program lengkap yang dibaca dari input, atau fungsi. Trik yang sangat bagus, dapat ditingkatkan sedikit / byte: for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));(44 byte)
Benoit Esnard
Ah ok, kalau begitu saya kira Anda akan melakukannya function f($n){for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));}, yaitu 60 byte.
Austin
Memang. Apakah Anda baik-baik saja jika saya mengedit jawaban saya untuk menambahkan solusi Anda?
Benoit Esnard
1
for($a=1;$i++<$n=$_GET[n];$a.=" ".($i+print"$a\n"));-> coba ini (kode lengkap, menggunakan parameter url ndengan nomor)
Ismael Miguel
5

CJam, 13 12 byte

ri{),:)S*N}/

Cara kerjanya :

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

Cobalah online di sini

Pengoptimal
sumber
4

Pyth, 9 byte

VQjdr1hhN

Benar-benar berpikir bahwa ini bisa dilakukan lebih pendek, tetapi sepertinya tidak begitu.

Cobalah online .

            Q = input()
VQ          For N in [0, 1, ..., Q-1]:
    r1hhN       create list [1, ..., N+1+1-1]
  jd            print joined with spaces
Jakube
sumber
1
Sebuah alternatif 9: VQaYhNjdY. Jika hanya amengembalikan daftar, maka kira-kira VQjdaYhNakan menjadi 8.
Sp3000
2
asebentar digunakan untuk mengembalikan daftar yang ditambahkan.
Pengoptimal
Saya tidak terbiasa dengan Pyth, jadi bisakah Anda menjelaskan mengapa N+1+1-1?
seequ
1
@ Sieg radalah fungsi rentang Python, oleh karena itu -1 ( r1Nmembuat daftar [1, 2, ..., N-1]). Namun dalam N iterasi dari loop, saya ingin daftar [1, 2, ..., N+1], karena itu saya perlu menambahkan 2untuk N. r1hhNditerjemahkan langsung ke range(1, N+1+1). Kemungkinan lain adalah r1+N2( range(1, N+2)).
Jakube
Atau bahkan mhdhN , tapi itu pendekatan yang sangat berbeda.
Jakube
4

JavaScript (ES6) 49 52

Tugas yang sangat sederhana, saya ingin tahu apakah ini dapat dibuat lebih pendek di JS (Perbarui: ya, menggunakan rekursi)

Rekursif 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)}
edc65
sumber
Di mana saya bisa menguji ini? Saya tidak bisa menemukan taman bermain ES6 yang menerima ini
Kristoffer Sall-Storgaard
@ KristofferSall-Storgaard Firefox mendukung ES6 sebagai default. Jadi Konsol Firefox.
Pengoptimal
4

Java, 85 84 byte

Ini mengejutkan pendek di Jawa.

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

Bertakuk:

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

1 byte berkat Bigtoes / Geobits

TheNumberOne
sumber
Anda dapat menyimpannya dengan memindahkannya b+=...ke 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)).
Suram
sumber
3

Python 2 - 62 54 65 byte

def f(n):
 for x in range(n):print' '.join(map(str,range(1,x+2)))
pepp
sumber
Nomor tersebut nharus diberikan sebagai input ke program, bukan diinisialisasi dalam variabel.
Zgarb
Terima kasih atas petunjuknya. Tidak yakin tentang itu.
pepp
2
Maaf, saya seharusnya lebih jelas. Yang saya maksudkan adalah bahwa Anda harus benar-benar mendefinisikan Ndengan melakukan N=input()atau sesuatu yang serupa, sehingga program Anda dapat dijalankan seperti itu. Berikut ini adalah diskusi Meta tentang topik tersebut.
Zgarb
Jadi ini benar, kan?
pepp
Terlihat bagus sekarang!
Zgarb
3

J, 9 karakter

Sebagai tacit, kata kerja monadik.

[:":\1+i.
  • i. y- angka dari 0hingga y - 1.
  • 1 + i. y- angka dari 1hingga y.
  • ": y- vektor ydirepresentasikan sebagai string.
  • ":\ y- setiap awalan ydiwakili sebagai string.
  • ":\ 1 + i. y- setiap awalan angka dari 1untuk ydiwakili sebagai matriks karakter.
FUZxxl
sumber
Nah, itu cukup pintar. +1
seequ
Ini lebih J-esque tetapi tidak melanggar aturan tentang tidak ada spasi tambahan di setiap baris?
mil
@ Miles Memang benar! Hal lain akan sangat rumit.
FUZxxl
3

> <> (Ikan) , 40 37 + 3 = 40 byte

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

Sekali lagi,> <> berjalan dengan baik di latihan pencetakan nomor lain. Jalankan dengan -vflag untuk input, mis

py -3 fish.py -v 4

Penjelasan

&               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
Sp3000
sumber
3

C (tanpa loop, 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);}}

Ini menciptakan fungsi r(n)yang dapat digunakan dengan cara ini:

main(){ r(5); }

Lihat dalam aksi, di sini di tutorialspoint.com

Itu membutuhkan beberapa trik yang mudah dijelaskan. Saya pikir itu bisa sangat ditingkatkan.

A. Breust
sumber
1
Sebenarnya itu 75 byte, bukan 74. Namun, Anda dapat memotongnya menjadi 72 byte dengan mengganti '' dengan 32 dan '\ n' dengan 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);}}
FatalSleep
1
Trik yang cukup bagus, terima kasih!
A. Breust
Terima kasih! Saya melakukan yang terbaik untuk meningkatkan Anda di kategori C, tapi saya tidak bisa membuat yang lebih pendek! Jadi saya memutuskan untuk mempersingkat milik Anda.
FatalSleep
64 bytes 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

Python 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
Kasramvd
sumber
Untuk jawaban di situs ini, Anda harus menulis program atau fungsi yang lengkap. Dan Anda harus mencetak hasilnya ke stdout, atau mengembalikannya dari suatu fungsi. N harus dibaca dari input atau diambil sebagai parameter fungsi, tidak ditentukan sebelumnya sebagai variabel.
jimmy23013
@ user23013 OK, sudah diperbaiki!
Kasramvd
Definisi fungsi perlu dimasukkan dalam hitungan byte, jadi saya tidak berpikir ini adalah 61. Mungkin Anda tertarik untuk memanggil fungsi itu sesuatu yang singkat, seperti p. Pada catatan lain, Anda dapat menghapus dua spasi - satu di antara printdan '\n'dan yang lainnya di antara )))dan for.
Sp3000
@ Sp3000 OK, terima kasih atas perhatiannya! diperbaiki!;)
Kasramvd
72:def p(N):print'\n'.join(' '.join(map(str,range(1,i+2)))for i in range(N))
seequ
2

Perl, 28

Membaca parameter dari stdin.

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

Dari baris perintah:

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

tapi saya tidak tahu bagaimana cara menghitungnya (mungkin antara 25 dan 29).

nutki
sumber
1

Python

import string
N,s=int(input()),list(string.digits)
for i in range(1,N+1):
    print(' '.join(s[1:i+1]))
bacchusbeale
sumber
1
Bukankah ini gagal jika N> = 10?
seequ
@ Sieg Ya Anda benar. Saya baru belajar Python, sedang mencari cara untuk mengkonversi daftar int ke daftar string.
bacchusbeale
63 byte: for i in range(int(input())):print(' '.join("123456789"[:i+1]))- Perhatikan bahwa string diperlakukan sebagai daftar.
seequ
1

Golfscript 14

,{2+,1>' '*n}/

Mengharapkan nomor input hadir pada stack.

Contoh daring: tautan

Cristian Lupascu
sumber
1

Klip , 16

Jm[ijkw,1iwS},1n

Penjelasan

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                      -.
Ypnypn
sumber
1

Pergi, 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}

Tidak tercemar saat ini

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
}

Jika kita perlu menangani N> 9 kita dapat menggunakan yang berikut ini pada 78 byte, namun itu membutuhkan impor fmtpaket.

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

Jika kita memasukkan pernyataan impor, sekarang saya kembali ke inisial saya 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}

Uji secara online di sini: http://play.golang.org/p/BWLQ9R6ilw

Versi dengan fmtada di sini: http://play.golang.org/p/hQEkLvpiqt

Kristoffer Sall-Storgaard
sumber
Saya tidak yakin bagaimana perasaan saya tentang
pelempar
Masalah utama yang saya lihat adalah tidak berfungsi untuk n> 9. Anda dapat menyimpan byte dengan mengubah !=ke >.
Geobits
@Bigtoes, perbaiki sekarang, saya tidak tahu apakah saya seharusnya menghitung importpernyataan itu
Kristoffer Sall-Storgaard
Saya tahu mereka dihitung untuk bahasa yang lebih saya kenal, jadi kemungkinan besar ya. Sucks, I know :)
Geobits
1

ZX / Sinclair BASIC - 39 byte

ZX Basic menggunakan 1 byte per kata kunci (semua huruf besar), jadi bantu untuk menjaga ukuran byte sedikit ...

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

Menggunakan n = 8

enter image description here

Brian
sumber
1
Bagus. Tapi ZX basic menggunakan 6 byte lebih tersembunyi untuk setiap literal numerik (trik umum adalah VAL("1")(6 byte karena VAL adalah 1) ditanamkan dari 1(7 byte))
edc65
1

R, 28

for(i in 1:scan())print(1:i)
freekvd
sumber
Outputnya tidak benar untuk nilai input 0. Juga, tidak jelas apakah memimpin [1]pada setiap baris melanggar spesifikasi.
Alex A.
@AlexA. jika Anda melihat lebih dekat pada pertanyaan Anda akan melihat komentar saya menanyakan perilaku apa yang seharusnya untuk n = 0. Tapi terima kasih telah menunjukkan saya ke arah yang benar!
freekvd
Saya melihat komentar. Masalahnya adalah bahwa ini tidak mencetak apa pun untuk 0, itu mencetak 1; 1 0. (Berpura ;- pura adalah istirahat baris.)
Alex A.
Anda mungkin ingin juga mempertimbangkan untuk menggunakan cat(1:i,"\n"). Meskipun sedikit lebih panjang dari print(1:i)itu, itu tidak termasuk memimpin [1]pada setiap baris.
Alex A.
1

TI-Basic, 28 byte

Input N
For(I,1,N
randIntNoRep(1,N->L1
SortA(L1
Disp L1
End
Timtech
sumber
1
Ini tidak menampilkan sebagaimana ditunjukkan oleh format; melainkan, array ditampilkan, tanda kurung dan semuanya, pada homescreen.
lirtosiast
1

C, 89 karakter

// 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("");}}

Untuk menghilangkan kebingungan tentang puts("");. Ini hanya mencetak karakter baris baru (seperti yang terlihat di sini ):

Perhatikan bahwa menempatkan tidak hanya berbeda dari fputs dalam menggunakan stdout sebagai tujuan, tetapi juga menambahkan karakter baris baru di akhir secara otomatis (yang fput tidak).

Saya mendapatkannya sedikit lebih pendek dengan algoritma java @ 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)););}
Felix Bytow
sumber
puts("");tidak melakukan apa-apa. Anda dapat menggunakan char b[999]=""alih-alih char b[999]={0}menyimpan 1 karakter.
mch
2
puts("");mencetak karakter baris baru.
Felix Bytow
1

Perl: 34 karakter

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

Kode ini mendapatkan nomor input yang disediakan melalui variabel khusus $_.

Felix Bytow
sumber
1
Sebagian besar tanda kurung berlebih di sini: print"@$_\n"for map[1..$_],1..$_juga berfungsi.
nutki
Saya menyesuaikan kode.
Felix Bytow
1

C # - 94 byte

Ditulis sebagai fungsi anonim yang mengembalikan string, yang sepertinya tidak diingkari oleh spek.

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

Ini adalah versi yang tidak diklik (komentar dibaca dalam urutan 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, ...
LegionMammal978
sumber
1

Bash + coreutils, 26 byte

seq $1|sed "x;G;s/\n/ /;h"
  • seq hanya menghasilkan angka 1 sampai n
  • sed menyimpan seluruh output untuk baris tertentu di ruang tunggu, dan kemudian menambahkan baris berikutnya untuk itu.
Trauma Digital
sumber
1

Haskell, 62 57 byte

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

Gaya bebas poin. Contoh penggunaan:

Prelude> f 5
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
nimi
sumber
Doing e=enumFromTo 1 saves 7 bytes.
Zgarb
@Zgarb: Thanks, but if I swap out enumFromTo 1, I have to give the main function a name, too, so it's 5 bytes. Without the name it would be a let construct: let e=enumFromTo 1 in (putStr.unlines.map(unwords.map show.e).e) 5
nimi
1

Mathematica, 32

Print@Row[Range@i," "]~Do~{i,#}&
alephalpha
sumber
1
How about TableForm[Range/@Range@#]&?
Martin Ender
1
Shorter: Grid[Range/@Range@#]&
alephalpha
And it even looks better. :) (I keep forgetting about Grid.)
Martin Ender
But I'm not sure if there is no trailing space at the end of each line.
alephalpha
Oh good point. :(
Martin Ender
1

Scala, 73 65 62 bytes

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

Ungolfed

def printNumberTriangle(n: Int): Unit = {
  def rowString(m: Int): String = 1.to(m).mkString(" ")
  print(1.to(n).map(rowString).mkString("\n"))
}
Dave Swartz
sumber