Sayı üçgeni yazdır


25

Bir sayı verildiğinde N, her satırın ien fazla sayı ile dolu olduğu bir NxN dik açılı üçgen oluşturun i.

Örnek

n = 0

(çıktı yok)

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

(hizalama gerekmez)

n = N

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

Her satırın sonunda hiçbir boşluk yoktur.

En az sayıda bayt kazanır ve standart boşluklara izin verilmez.


Çıktı, iç içe geçmiş bir sayı listesi olabilir mi?
15'de 5

N = 0 ve n> 9 için davranış ne olmalıdır?
freekvd

@Sieg Sure, çıktı doğru olduğu sürece.
Tan WS

0 için @freekvd çıkış yok, n> 9 için özel formatlama gerekmiyor
Tan WS

Kahretsin, gönderimimi kırdın. En kısa
zamanda tamir

Yanıtlar:


17

Joe , 5 3 bayt ( -tbayrak için +2 veya +3 )

Anlaşılan Joe'nun potansiyelini tam olarak kullanmadım. Bunu ilk gönderdiğimde bu mümkündü.

\AR

Burada, R0'dan n'ye kadar olan aralığı özel gösterir. Sonra \Aart arda öneklerini alır ( Akimlik işlevidir). Örnekler:

İle -tbayrağı (not: bu bile bayrağı olmadan standart çıktı şimdi):

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

O olmadan:

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

Kurallar biraz değişti. Eski kodum N = 0 ile düzgün davranmadı. Ayrıca, şimdi çıktı sadece iç içe geçmiş bir liste -tolabilir , bu nedenle bırakılabilir.

1R1+R

Şimdi, Rn0'dan n'ye kadar özel bir aralık verir. 0 verilirse, boş bir liste döndürür. 1+bu aralığın her elemanına 1 ekler. 1Rdeğerleri 1'den x'e kadar olan aralıklarla eşler. Eşleştirildiğinde boş liatlar, boş listeler döndürür.

Örnek çıktı:

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

Güncelleme: Sadece bir şey fark ettim. İşlev otomatik olarak 0 elementi sıralayacak şekilde eşlenir. Aşağıdaki örnek -tbayrakla çalıştırılmıştır .

   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

Eski: 5 bayt ( -tbayraklı)

1R1R

Bu, sayı alan, 1'den N'ye ( 1Rn) kadar bir liste oluşturan ve bu değerleri önceki aralıkla eşleyen ve 1'den N'ye kadar olan her bir öğe için 1'den x'e kadar bir aralık veren anonim bir işlevdir .

-tBayrak J benzeri bir tablo olarak çıkış verir.

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

Not: Dil çok yeni ve tamamlanmadı, ancak en son sürüm bu mücadeleden önce yayımlandı.


4
Yani J dizi tabanlı zorluklar üzerinde bir avantaj elde etmek için yeterli değildi? : D
Doktor

4
@Optimizer Optimizasyon önemlidir.
bkz.

4
Birdenbire en çok oy kullandığım yanıt en az zaman harcadığım cevaptı. Adaletsizlik.
saat

1
Sanırım Joe senin ortalama Joe değil ...
Justin

10

Python 3, 48 45 bayt

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

Yan etkileri için yaşasın.


2
İç içe geçmiş hiçlik. Şimdi bükülmüş.
saat

Çok şık bir numara: işlevi printyerine prints komutunu tersten uygulamak.
xnor

8

APL, 5

⍪⍳¨⍳⎕

bir vektör yaratır 1.n ve her eleman için böyle bir vektör.

Sonra ⍪, tüm vektörlerden bir sütun oluşturur. Bu, sondaki boşluklardaki sorunu önler.

Tryapl.org'da deneyin


Eski çözüm:

{⎕←⍳⍵}¨⍳⎕

Bir vektör oluşturur 1..n

{⎕ ← ⍳⍵}, her bir (element) eleman için ayrı bir satırda bir vektör 1..n çıktı veren bir işlevdir

Bu ne yazık ki tryapl.org adresinde denenemiyor, çünkü ⎕ ← orada çalışmıyor.


Herhangi bir satırda arkada boşluk olmamalıdır.
randomra

ah teşekkür ederim, bunu özledim. Yakında düzeltecek
Moris Zucca

APL'nin bir çözüm olacağını biliyordum
Conor O'Brien

Aman Tanrım, gözlerim neler görüyor
Codefun64

6

J, 27 bayt

J, dizi olmayan sayısal çıktıda iyi değildir. Bu işlev sayılardan uygun şekilde biçimlendirilmiş bir dize oluşturur.

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

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

Burada çevrimiçi deneyin.


Ayrıca 11]\@i.;@(<@,&LF@":@:>:@:]\@i.)
32'de seequ

6

PHP, 53 Bayt

Düzenleme 2: Ismael Miguel bir işlev tanımlamak yerine girişten okuma önerdi, bu yüzden puan PHP için şimdi 53 bayttır:

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

Ve bir kez daha, PHP hataları yoksaymak üzere yapılandırılmışsa iyileştirilebilir (52 bayt):

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

Düzenleme: Austin yorumlarda 60 bayt sürümü önerdi:

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

PHP hatalarını göstermiyorsak (59 byte) geliştirilebilir:

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

$a yazdırılacak bir sonraki satırı ve her basıldığında bir boşluk ve bir sonraki numarayı saklar (print1 bırakılır her zaman geri döner ) buna birleştirilir.


Özyinelemeli fonksiyonlar (65 bayt):

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.

Hata bildirme işlevi devre dışı bırakıldığında daha kısa özyinelemeli işlev (64 bayt):

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

Daha kısa özyinelemeli fonksiyon, hata raporlama devre dışı ve gerçek çıktıdan önce boş bir satır (62 byte)

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

Sadece eğlence için, özyinelemeli olmayan fonksiyonlar:

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 bayt:for($a=1;@$i<$n;$a.=" ".(@++$i+print"$a\n"));
Austin

@Austin: Bir yorumda, kodun girdiden okunan tam bir program veya bir işlev olması gerektiğini okudum. Çok hoş bir numara, biraz / byte ile geliştirilebilir: for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));(44 bytes)
Benoit Esnard

Ah tamam, o zaman sanırım function f($n){for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));}60 bayt olan yaparsınız .
Austin

Aslında. Çözümünüzü eklemek için cevabımı düzenlersem sorun olur mu?
Benoit Esnard

1
for($a=1;$i++<$n=$_GET[n];$a.=" ".($i+print"$a\n"));-> bunu deneyin (tam kod, nsayı ile url parametresini kullanarak )
Ismael Miguel

5

CJam, 13 12 bayt

ri{),:)S*N}/

Nasıl çalışır :

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

Burada çevrimiçi deneyin


4

Pyth, 9 bayt

VQjdr1hhN

Gerçekten bunun daha kısa yapılabileceğini düşündüm, ama öyle görünmüyor.

Çevrimiçi deneyin .

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

1
Alternatif bir 9: VQaYhNjdY. Eğer sadece alisteyi iade ederse , VQjdaYhN8 gibi bir şey olurdu.
Sp3000

2
aekli listeye geri dönmek için kısaca kullanılır.
Doktor

Pyth'a aşina değilim, o yüzden nedenini açıklayabilir N+1+1-1misiniz?
saat

1
@Sieg r, Python-range işlevidir, bu nedenle -1 (r1N listeyi oluşturur [1, 2, ..., N-1]). Ama döngünün N. tekrarında, ben listesini istiyorum [1, 2, ..., N+1]bu nedenle ben eklemek gerekir 2için N. r1hhNdoğrudan çevirir range(1, N+1+1). Başka bir olasılık r1+N2( range(1, N+2)) olacaktır.
Jakube

Ya da mhdhN, ama bu tamamen farklı bir yaklaşım.
Jakube

4

JavaScript (ES6) 49 52

Böyle basit bir görev, acaba bu JS'de daha kısa yapılabilir mi acaba (Güncelleme: evet, özyineleme kullanarak)

Özyinelemeli 49

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

Yinelemeli 52

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

Bunu nerede test edebilirim? Bunu kabul eden herhangi bir ES6 oyun alanı bulamıyorum
Kristoffer Sall-Storgaard,

@ KristofferSall-Storgaard Firefox, ES6'nın varsayılan olmasını destekliyor. Yani Firefox Konsolu.
Doktor

4

Java, 85 84 bayt

Java'da bu şaşırtıcı derecede kısa.

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

Girintili'ye:

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

Bigtoes / Geobits sayesinde 1 bayt


Birini b+=...içine taşıyarak tasarruf edebilirsiniz 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

Python 2 - 62 54 65 bayt

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

Sayı nolmayan bir değişken başlatıldı programa girdi olarak verilmelidir.
Zgarb

İpucu için teşekkürler. Bundan emin değildim.
Pepp

2
Üzgünüm, daha net olmalıydım. Demek istediğim, aslında Nbunu yaparak N=input()veya benzer bir şeyle tanımlamanız gerektiği , böylece programınızın böyle çalıştırılabilmesidir. İşte konuyla ilgili bir Meta tartışma.
Zgarb

Yani bu doğru olurdu, değil mi?
Pepp

Şimdi iyi görünüyor!
Zgarb

3

J, 9 karakter

Bir taktik olarak, monadik fiil.

[:":\1+i.
  • i. y- dan numaralar 0için y - 1.
  • 1 + i. y- dan numaralar 1için y.
  • ": y- ybir dize olarak temsil edilen vektör .
  • ":\ y- ybir dize olarak gösterilen her önek .
  • ":\ 1 + i. y- numaralardan her önek 1için ykarakter bir matris olarak temsil edilmektedir.

Şimdi bu oldukça akıllıca. +1
see

Bu daha J-esque'dir, ancak her satırda sonda boşluk olmadığına dair kuralı ihlal etmiyor mu?
miller

@miles Gerçekten de öyle! Başka bir şey çok karmaşık olurdu.
FUZxxl

3

> <> (Balık) , 40 37 + 3 = 40 bayt

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

Bir kez daha,> <> başka bir sayıdaki baskı alıştırmasında iyi iş çıkarıyor. -vGirdi için bayrak ile çalıştırın , örneğin

py -3 fish.py -v 4

açıklama

&               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 (döngüsüz, evet!) - 72 bayt

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

Bu, r(n)bu şekilde kullanılabilecek bir fonksiyon yaratır :

main(){ r(5); }

Uygulamada, burada tutorialspoint.com'da görün

Kolayca açıklanabilen çok az numara gerekiyor. Bence çok geliştirilebilir.


1
Aslında 74 değil 75 bayt. Ancak, '' 32 ve '\ n' yerine 10 ile değiştirerek onu 72 bayta kadar b(n,c){if(n){b(n-1,32);printf("%d%c",n,c);}}r(n){if(n){r(n-1);b(n,10);}}
azaltabilirsiniz

1
Güzel numara, teşekkürler!
A. Breust

Teşekkürler! C kategorisinde bir tane olmak için elimden geleni yaptım ama daha kısa bir şey yapamadım! Ben de seninkini kısaltmaya karar verdim.
Ölümcül Uyku

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

Bu sitedeki cevaplar için eksiksiz bir program veya işlev yazmalısınız. Ve sonucu stdout'a yazdırmanız veya bir fonksiyondan döndürmeniz gerekir. N, girdiden okunmalı veya değişken olarak önceden tanımlanmamış bir işlev parametresi olarak alınmalıdır.
jimmy23013

@ user23013 Tamam, düzeltildi!
Kasramvd

İşlev tanımının bayt sayımına dahil edilmesi gerekir, bu yüzden bunun 61 olduğunu sanmıyorum. İşleve kısa gibi bir şey söylemek sizin için en iyisidir p. Başka bir notta, iki boşluk kaldırabilirsiniz;print ve '\n'arasındaki diğer )))ve for.
Sp3000

@ Sp3000 Tamam, dikkatiniz için teşekkürler! sabit!;)
Kasramvd

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

2

Perl, 28

Parametreyi stdin'den okur.

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

Komut satırından:

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

ama şimdi bunu nasıl sayacağımı bilmiyorum (muhtemelen 25 ile 29 arasında).


1

piton

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

1
N> = 10 ise bu başarısız olmaz mı?
15'de

@Sieg Evet haklısın. Python'u yeni öğrendim, int listesini dizelerin listesine dönüştürmenin yollarını arıyordum.
bacchusbeale

63 bayt: for i in range(int(input())):print(' '.join("123456789"[:i+1]))- Dizgilerin liste olarak değerlendirildiğini unutmayın.
saat


1

Klips , 16

Jm[ijkw,1iwS},1n

açıklama

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

Gitmek, 93 81 78 93 90 bayt

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

Şu andaki asılsız

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> 9 kullanmamız gerekiyorsa, aşağıdakileri 78 byte'da kullanabiliriz, ancak fmtpaketin içe aktarılmasını gerektirir .

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

İmport ifadesini eklersek, şimdi başlangıçta geri döneceğim 93 92 90 bayt

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

Burada çevrimiçi test edin: http://play.golang.org/p/BWLQ9R6ilw

İle sürüm fmtburada: http://play.golang.org/p/hQEkLvpiqt


Ben dize döküm hakkında hissetmeyeceğim emin nasıl ama bir bayt dizisi dönüştürmek için herhangi bir girişim sadece artık yapar
Kristoffer Sall-Storgaard

Gördüğüm en temel sorun n> 9 için işe yaramaması. Sen değiştirerek byte kaydedebilirsiniz !=için >olsa.
Geobits

@Bigtoes, ben saymak gerekiyor bilmem daha dont, şimdi sabit importdeyimi olsa
Kristoffer Sall-Storgaard

Bildiğim daha çok aşina olduğum diller için sayıldığını biliyorum, bu yüzden büyük olasılıkla evet. Berbat, biliyorum :)
Geobits

1

ZX / Sinclair BASIC - 39 bayt

ZX Basic, anahtar kelime başına 1 bayt kullanır (tüm büyük harfler), bu nedenle bayt boyutunu biraz aşağı tutmanıza yardımcı olur ...

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

N = 8 kullanmak

enter image description here


1
Güzel. Fakat ZX basic, her sayısal hazır bilgi için 6 gizli bayt daha kullanır (ortak bir numara VAL("1")(VAL 1 olduğu gibi 6 bayt) 1(7 bayt))
edc65 13.03.01:

1

R, 28

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

Çıktı, 0 değerindeki bir giriş değeri için yanlıştır. Ayrıca, [1]her satırdaki satırın spesifikasyonları ihlal edip etmediği açık değildir .
Alex A.

@AlexA. Eğer soruya yakından bakarsanız yorumumun n = 0 için ne gibi davranması gerektiğini sorduğunu göreceksiniz. Ama beni doğru yöne çevirdiğin için teşekkürler!
freekvd 13.03.2015

Yorumu gördüm. Mesele şu ki, 0 için hiçbir şey basmıyor, yazdırıyor 1; 1 0. (Pretend ;tam bir moladır .)
Alex A.

Ayrıca kullanmayı düşünebilirsiniz cat(1:i,"\n"). Bundan biraz daha uzun olsa da , her satırda bir satır print(1:i)içermez [1].
Alex A.

1

TI-Basic, 28 bayt

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

1
Bu, formatın gösterdiği şekilde çıkış yapmaz; Bunun yerine, dizi ana ekranda parantez ve hepsi görüntülenir.
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("");}}

Hakkında karışıklığı ortadan kaldırmak için puts("");. Bu sadece yeni satır karakteri basar ( burada görüldüğü gibi ):

Koyduğu dikkat, yalnızca hedef olarak stdout kullandığı için fput'lardan farklı olmakla kalmaz, aynı zamanda otomatik olarak sonuna yeni bir satır karakteri ekler (bu fput'ların yapmaz).

@ TheBestOne'nın java algoritmasıyla biraz daha kısa tuttum:

// 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("");hiç birşey yapmıyor. 1 karakter kaydetmek char b[999]=""yerine kullanabilirsiniz char b[999]={0}.
mch

2
puts("");yeni satır karakteri basar.
Felix Bytow

1

Perl: 34 karakter

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

Bu kod özel değişken aracılığıyla verilen giriş numarasını alır $_.


1
Çoğu parantez burada gereksiz: print"@$_\n"for map[1..$_],1..$_ayrıca çalışıyor.
nutki

Kodu değiştirdim.
Felix Bytow

1

94 bayt

Spesifikasyona izin verilmeyen görünen bir string döndüren isimsiz bir fonksiyon olarak yazılmıştır.

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

İşte bir ungolfed versiyonu (Yorumlar BDCA sırayla okunur):

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 bayt

seq $1|sed "x;G;s/\n/ /;h"
  • seq sadece 1'den n'ye kadar olan sayıları oluşturur
  • sed belirli bir satır için çıktının tamamını tutma alanına kaydeder ve bir sonraki satırı ona ekler.

1

Haskell, 62 57 bayt

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

Noktasız stil. Kullanım örneği:

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

Bunu yapmak e=enumFromTo 17 bayt kazandırır.
Zgarb

@Zgarb: Teşekkürler, ama eğer takas enumFromTo 1edersem, ana fonksiyona da bir isim vermem gerekiyor, bu yüzden 5 bayt. Bu isim olmasaydı, bir letyapı olurdu :let e=enumFromTo 1 in (putStr.unlines.map(unwords.map show.e).e) 5
nimi


1

Scala, 73 65 62 bayt

(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"))
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.