Diberi nomor N
, hasilkan NxN segitiga siku-siku, di mana setiap baris i
diisi 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.
Jawaban:
Joe ,
53 byte (+2 atau +3 untuk-t
flag)Yah, rupanya saya tidak memanfaatkan potensi penuh Joe. Ini mungkin kembali ketika saya pertama kali memposting ini.
Di sini,
R
berikan kisaran dari 0 hingga n, eksklusif. Kemudian\A
mengambil awalan yang berurutan (ituA
adalah fungsi identitas). Contoh:Dengan
-t
flag (catatan: sekarang ini adalah output standar bahkan tanpa flag):Tanpa itu:
Aturan sedikit berubah. Kode lama saya tidak berlaku dengan N = 0. Juga, sekarang keluaran bisa jadi hanya daftar yang disarangkan, jadi
-t
bisa dijatuhkan.Sekarang,
Rn
berikan rentang dari 0 hingga n, eksklusif. Jika diberikan 0, ia mengembalikan daftar kosong.1+
menambahkan 1 ke setiap elemen dari rentang itu.1R
memetakan nilai ke rentang dari 1 hingga x. Empty liats, saat dipetakan, mengembalikan daftar kosong.Contoh output:
Pembaruan: Saya baru saja memperhatikan sesuatu. Fungsi secara otomatis memetakan untuk memberi peringkat 0 elemen. Contoh berikut dijalankan dengan
-t
bendera.Lama: 5 byte (dengan
-t
bendera)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
-t
flag memberikan output sebagai meja J-seperti.Catatan: bahasa ini sangat baru dan tidak lengkap, tetapi versi terbaru dirilis sebelum tantangan ini.
sumber
Python 3,
4845 byteHore untuk efek samping.
sumber
print
untuk menjalankanprint
s dalam urutan terbalik.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.
sumber
J, 27 byte
J tidak baik dengan output numerik non-array. Fungsi ini menciptakan string yang diformat dengan benar dari angka-angka.
Cobalah online di sini.
sumber
]\@i.
untuk mendapatkan;@(<@,&LF@":@:>:@:]\@i.)
PHP, 53 Bytes
Sunting 2: Ismael Miguel menyarankan agar membaca dari input alih-alih mendefinisikan fungsi, sehingga skor sekarang 53 byte untuk PHP:
Dan sekali lagi, ini dapat ditingkatkan jika PHP dikonfigurasi untuk mengabaikan kesalahan (52 byte):
Sunting: Austin menyarankan versi 60 byte dalam komentar:
Yang dapat ditingkatkan jika kami tidak menampilkan kesalahan PHP (59 byte):
$a
menyimpan baris berikutnya yang akan dicetak, dan setiap kali dicetak spasi dan angka berikutnya (print
selalu kembali1
) digabungkan dengannya.Fungsi rekursif (65 byte):
Fungsi rekursif yang lebih pendek, dengan pelaporan kesalahan dinonaktifkan (64 byte):
Fungsi rekursif yang lebih pendek, dengan pelaporan kesalahan dinonaktifkan dan baris kosong sebelum output nyata (62 byte):
Hanya untuk bersenang-senang, fucntions non-rekursif:
sumber
for($a=1;@$i<$n;$a.=" ".(@++$i+print"$a\n"));
for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));
(44 byte)function f($n){for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));}
, yaitu 60 byte.for($a=1;$i++<$n=$_GET[n];$a.=" ".($i+print"$a\n"));
-> coba ini (kode lengkap, menggunakan parameter urln
dengan nomor)CJam,
1312 byteCara kerjanya :
Cobalah online di sini
sumber
Pyth, 9 byte
Benar-benar berpikir bahwa ini bisa dilakukan lebih pendek, tetapi sepertinya tidak begitu.
Cobalah online .
sumber
VQaYhNjdY
. Jika hanyaa
mengembalikan daftar, maka kira-kiraVQjdaYhN
akan menjadi 8.a
sebentar digunakan untuk mengembalikan daftar yang ditambahkan.N+1+1-1
?r
adalah fungsi rentang Python, oleh karena itu -1 (r1N
membuat daftar[1, 2, ..., N-1]
). Namun dalam N iterasi dari loop, saya ingin daftar[1, 2, ..., N+1]
, karena itu saya perlu menambahkan2
untukN
.r1hhN
diterjemahkan langsung kerange(1, N+1+1)
. Kemungkinan lain adalahr1+N2
(range(1, N+2)
).mhdhN
, tapi itu pendekatan yang sangat berbeda.JavaScript (ES6) 49
52Tugas yang sangat sederhana, saya ingin tahu apakah ini dapat dibuat lebih pendek di JS (Perbarui: ya, menggunakan rekursi)
Rekursif 49
Iteraive 52
sumber
Java,
8584 byteIni mengejutkan pendek di Jawa.
Bertakuk:
1 byte berkat Bigtoes / Geobits
sumber
b+=...
keprintln(b+=...)
.Prolog - 119
sumber
Python 2 -
625465 bytesumber
n
harus diberikan sebagai input ke program, bukan diinisialisasi dalam variabel.N
dengan melakukanN=input()
atau sesuatu yang serupa, sehingga program Anda dapat dijalankan seperti itu. Berikut ini adalah diskusi Meta tentang topik tersebut.J, 9 karakter
Sebagai tacit, kata kerja monadik.
i. y
- angka dari0
hinggay - 1
.1 + i. y
- angka dari1
hinggay
.": y
- vektory
direpresentasikan sebagai string.":\ y
- setiap awalany
diwakili sebagai string.":\ 1 + i. y
- setiap awalan angka dari1
untuky
diwakili sebagai matriks karakter.sumber
> <> (Ikan) ,
4037 + 3 = 40 byteSekali lagi,> <> berjalan dengan baik di latihan pencetakan nomor lain. Jalankan dengan
-v
flag untuk input, misPenjelasan
sumber
C (tanpa loop, yeah!) - 72 byte
Ini menciptakan fungsi
r(n)
yang dapat digunakan dengan cara ini:Lihat dalam aksi, di sini di tutorialspoint.com
Itu membutuhkan beberapa trik yang mudah dijelaskan. Saya pikir itu bisa sangat ditingkatkan.
sumber
b(n,c){if(n){b(n-1,32);printf("%d%c",n,c);}}r(n){if(n){r(n-1);b(n,10);}}
b(n,c){n&&b(n-1,32)^printf("%d%c",n,c);}r(n){n&&r(n-1)^b(n,10);}
WandboxPython 2 - 72
sumber
p
. Pada catatan lain, Anda dapat menghapus dua spasi - satu di antaraprint
dan'\n'
dan yang lainnya di antara)))
danfor
.def p(N):print'\n'.join(' '.join(map(str,range(1,i+2)))for i in range(N))
Perl, 28
Membaca parameter dari stdin.
Dari baris perintah:
tapi saya tidak tahu bagaimana cara menghitungnya (mungkin antara 25 dan 29).
sumber
Python
sumber
for i in range(int(input())):print(' '.join("123456789"[:i+1]))
- Perhatikan bahwa string diperlakukan sebagai daftar.Golfscript 14
Mengharapkan nomor input hadir pada stack.
Contoh daring: tautan
sumber
Klip , 16
Penjelasan
sumber
Pergi,
9381789390 byteTidak tercemar saat ini
Jika kita perlu menangani N> 9 kita dapat menggunakan yang berikut ini pada 78 byte, namun itu membutuhkan impor
fmt
paket.Jika kita memasukkan pernyataan impor, sekarang saya kembali ke inisial saya
939290 byteUji secara online di sini: http://play.golang.org/p/BWLQ9R6ilw
Versi dengan
fmt
ada di sini: http://play.golang.org/p/hQEkLvpiqtsumber
!=
ke>
.import
pernyataan ituZX / Sinclair BASIC - 39 byte
ZX Basic menggunakan 1 byte per kata kunci (semua huruf besar), jadi bantu untuk menjaga ukuran byte sedikit ...
Menggunakan n = 8
sumber
VAL("1")
(6 byte karena VAL adalah 1) ditanamkan dari1
(7 byte))R, 28
sumber
[1]
pada setiap baris melanggar spesifikasi.1; 1 0
. (Berpura;
- pura adalah istirahat baris.)cat(1:i,"\n")
. Meskipun sedikit lebih panjang dariprint(1:i)
itu, itu tidak termasuk memimpin[1]
pada setiap baris.TI-Basic, 28 byte
sumber
C, 89 karakter
Untuk menghilangkan kebingungan tentang
puts("");
. Ini hanya mencetak karakter baris baru (seperti yang terlihat di sini ):Saya mendapatkannya sedikit lebih pendek dengan algoritma java @ TheBestOne:
sumber
puts("");
tidak melakukan apa-apa. Anda dapat menggunakanchar b[999]=""
alih-alihchar b[999]={0}
menyimpan 1 karakter.puts("");
mencetak karakter baris baru.Perl: 34 karakter
Kode ini mendapatkan nomor input yang disediakan melalui variabel khusus
$_
.sumber
print"@$_\n"for map[1..$_],1..$_
juga berfungsi.C # - 94 byte
Ditulis sebagai fungsi anonim yang mengembalikan string, yang sepertinya tidak diingkari oleh spek.
Ini adalah versi yang tidak diklik (komentar dibaca dalam urutan BDCA):
sumber
Bash + coreutils, 26 byte
seq
hanya menghasilkan angka 1 sampai nsed
menyimpan seluruh output untuk baris tertentu di ruang tunggu, dan kemudian menambahkan baris berikutnya untuk itu.sumber
Haskell,
6257 byteGaya bebas poin. Contoh penggunaan:
sumber
e=enumFromTo 1
saves 7 bytes.enumFromTo 1
, I have to give the main function a name, too, so it's 5 bytes. Without the name it would be alet
construct:let e=enumFromTo 1 in (putStr.unlines.map(unwords.map show.e).e) 5
Mathematica, 32
sumber
TableForm[Range/@Range@#]&
?Grid[Range/@Range@#]&
Grid
.)Scala,
736562 bytesUngolfed
sumber