Imprimer le triangle numérique

25

Étant donné un nombre N, sortez un triangle à angle droit NxN, où chaque ligne iest remplie de nombres jusqu'à i.

Exemple

n = 0

(pas de sortie)

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

(aucun alignement nécessaire)

n = N

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

Il n'y a pas d'espace à la fin de chaque ligne.

Le plus petit nombre d'octets gagne et les failles standard ne sont pas autorisées.

Tan WS
la source
La sortie peut-elle être une liste imbriquée de nombres?
seequ
Quel devrait être le comportement pour n = 0 et pour n> 9?
freekvd
@Sieg Bien sûr, tant que la sortie est correcte.
Tan WS
@freekvd pour 0 il n'y a pas de sortie, pour n> 9 aucun formatage spécial requis
Tan WS
Ah bon sang, tu as cassé ma soumission. Correction ASAP
seequ

Réponses:

17

Joe , 5 3 octets (+2 ou +3 pour l' -tindicateur)

Eh bien, apparemment, je n'ai pas utilisé tout le potentiel de Joe. C'était possible lorsque j'ai posté cela pour la première fois.

\AR

Ici, Rdonne la plage de 0 à n, exclusif. En \Aprend ensuite des préfixes successifs ( Ac'est la fonction d'identité). Exemples:

Avec -tindicateur (remarque: c'est maintenant la sortie standard même sans indicateur):

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

Sans ça:

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

Les règles ont un peu changé. Mon ancien code ne se comportait pas correctement avec N = 0. De plus, la sortie peut désormais être simplement une liste imbriquée, elle -tpeut donc être supprimée.

1R1+R

Maintenant, Rndonne une plage de 0 à n, exclusif. Si donné 0, il renvoie une liste vide. 1+ajoute 1 à chaque élément de cette plage. 1Rmappe les valeurs sur des plages de 1 à x. Les menteurs vides, lorsqu'ils sont mappés, renvoient des listes vides.

Exemple de sortie:

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

Mise à jour: je viens de remarquer quelque chose. La fonction mappe automatiquement pour classer les éléments 0. L'exemple suivant est exécuté avec -tflag.

   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

Ancien: 5 octets (avec le -tdrapeau)

1R1R

Il s'agit d'une fonction anonyme qui prend un nombre, crée une liste de 1 à N ( 1Rn) et mappe ces valeurs à la plage précédente, donnant une plage de 1 à x pour chaque élément de la plage 1 à N.

Le -tdrapeau donne la sortie sous forme de table de type J.

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

Remarque: la langue est très nouvelle et incomplète, mais la dernière version a été publiée avant ce défi.

seequ
la source
4
Donc, J n'était pas suffisant pour avoir un avantage sur les défis basés sur les baies? : D
Optimizer
4
@Optimizer L'optimisation est importante.
seequ
4
Du coup, ma réponse la plus votée est celle sur laquelle j'ai passé le moins de temps. L'injustice.
seequ
1
Je suppose que Joe n'est pas votre Joe moyen ...
Justin
10

Python 3, 48 45 octets

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

Hourra pour les effets secondaires.

Sp3000
la source
2
Le néant imbriqué. Maintenant, c'est tordu.
seequ
C'est une astuce astucieuse: mettre la fonction avant le printpour exécuter le prints dans l'ordre inverse.
xnor
8

APL, 5

⍪⍳¨⍳⎕

crée un vecteur 1..n et pour chaque élément un autre tel vecteur.

Alors ⍪ fait une colonne de tous les vecteurs. Cela évite le problème avec les blancs de fin.

Essayez-le sur tryapl.org


Solution plus ancienne:

{⎕←⍳⍵}¨⍳⎕

Crée un vecteur 1..n

{⎕ ← ⍳⍵} est une fonction qui génère pour chaque (¨) élément un vecteur 1..n sur une ligne distincte

Celui-ci ne peut malheureusement pas être essayé sur tryapl.org, car ⎕ ← n'y fonctionne pas.

Moris Zucca
la source
Il ne doit y avoir aucun espace de fin dans aucune ligne.
randomra
ah merci, j'ai raté celui-là. Corrigera bientôt
Moris Zucca
Je savais qu'APL serait une solution
Conor O'Brien
Oh mon Dieu, que voient mes yeux
Codefun64
6

J, 27 octets

J n'est pas bon avec une sortie numérique non matricielle. Cette fonction crée une chaîne correctement formatée à partir des nombres.

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

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

Essayez-le en ligne ici.

randomra
la source
Vous pouvez également utiliser ]\@i.pour obtenir;@(<@,&LF@":@:>:@:]\@i.)
seequ
6

PHP, 53 octets

Edit 2: Ismael Miguel a suggéré de lire depuis l'entrée au lieu de définir une fonction, donc le score est maintenant de 53 octets pour PHP:

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

Et encore une fois, il peut être amélioré si PHP est configuré pour ignorer les erreurs (52 octets):

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

Edit: Austin a suggéré une version de 60 octets dans les commentaires:

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

Ce qui peut être amélioré si nous n'affichons pas les erreurs PHP (59 octets):

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

$astocke la ligne suivante qui sera imprimée, et chaque fois qu'elle est imprimée, un espace et le numéro suivant ( printrevient toujours 1) lui sont concaténés.


Fonctions récursives (65 octets):

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.

Fonction récursive plus courte, avec rapport d'erreurs désactivé (64 octets):

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

Fonction récursive encore plus courte, avec rapport d'erreurs désactivé et une ligne vide avant la sortie réelle (62 octets):

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

Juste pour des fonctions amusantes et non récursives:

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
la source
2
45 octets:for($a=1;@$i<$n;$a.=" ".(@++$i+print"$a\n"));
Austin
@Austin: J'ai lu dans un commentaire que le code doit être soit une lecture complète du programme depuis l'entrée, soit une fonction. Très belle astuce, elle peut être améliorée d'un bit / octet: for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));(44 octets)
Benoit Esnard
Ah ok, alors je suppose que vous feriez function f($n){for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));}, ce qui fait 60 octets.
Austin
Effectivement. Êtes-vous d'accord si je modifie ma réponse pour ajouter votre solution?
Benoit Esnard
1
for($a=1;$i++<$n=$_GET[n];$a.=" ".($i+print"$a\n"));-> essayez ceci (code complet, en utilisant le paramètre url navec le numéro)
Ismael Miguel
5

CJam, 13 12 octets

ri{),:)S*N}/

Comment ça marche :

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

Essayez-le en ligne ici

Optimiseur
la source
4

Pyth, 9 octets

VQjdr1hhN

Vraiment pensé que cela peut être fait plus court, mais cela ne semble pas le cas.

Essayez-le en ligne .

            Q = input()
VQ          For N in [0, 1, ..., Q-1]:
    r1hhN       create list [1, ..., N+1+1-1]
  jd            print joined with spaces
Jakube
la source
1
Une alternative 9: VQaYhNjdY. Si seulement arenvoyé la liste, alors quelque chose comme VQjdaYhNserait 8.
Sp3000
2
abrièvement utilisé pour renvoyer la liste annexée.
Optimizer
Je ne connais pas Pyth, pourriez-vous expliquer pourquoi N+1+1-1?
seequ
1
@Sieg rest la fonction de plage Python, donc le -1 ( r1Ncrée la liste [1, 2, ..., N-1]). Mais dans la Nième itération de la boucle, je veux la liste [1, 2, ..., N+1], donc je dois ajouter 2à N. r1hhNse traduit directement par range(1, N+1+1). Une autre possibilité serait r1+N2( range(1, N+2)).
Jakube
Ou même mhdhN, mais c'est une approche complètement différente.
Jakube
4

JavaScript (ES6) 49 52

Une tâche aussi simple, je me demande si cela peut être raccourci en JS (mise à jour: oui, en utilisant la récursivité)

Récursif 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
la source
Où puis-je tester cela? Je n'arrive pas à trouver de terrains de jeux ES6 qui acceptent cela
Kristoffer Sall-Storgaard
@ KristofferSall-Storgaard Firefox prend en charge ES6 par défaut. Donc, Firefox Console.
Optimizer
4

Java, 85 84 octets

C'est étonnamment court en Java.

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

Dentelé:

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

1 octet grâce à Bigtoes / Geobits

Le numéro un
la source
Vous pouvez en enregistrer un en déplaçant le b+=...dans 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)).
Οurous
la source
3

Python 2 - 62 54 65 octets

def f(n):
 for x in range(n):print' '.join(map(str,range(1,x+2)))
poivre
la source
Le nombre ndoit être donné en entrée du programme, non initialisé dans une variable.
Zgarb
Merci pour l'astuce. Je n'en étais pas sûr.
pepp
2
Désolé, j'aurais dû être plus clair. Ce que je voulais dire, c'est que vous devez réellement définir Nen faisant N=input()ou quelque chose de similaire, afin que votre programme puisse être exécuté comme tel. Voici une discussion Meta sur le sujet.
Zgarb
Ce serait donc vrai, non?
pepp
Ça a l'air bien maintenant!
Zgarb
3

J, 9 caractères

Comme verbe tacite et monadique.

[:":\1+i.
  • i. y- les nombres de 0à y - 1.
  • 1 + i. y- les nombres de 1à y.
  • ": y- le vecteur yreprésenté par une chaîne.
  • ":\ y- chaque préfixe de yreprésenté sous forme de chaîne.
  • ":\ 1 + i. y- chaque préfixe des nombres de 1à yreprésenté sous forme de matrice de caractères.
FUZxxl
la source
Maintenant, c'est assez intelligent. +1
seequ
C'est plus J-esque mais ne viole-t-il pas la règle selon laquelle il n'y a pas d'espaces de fin sur chaque ligne?
miles
@miles C'est vrai! Tout le reste serait très compliqué.
FUZxxl
3

> <> (Poisson) , 40 37 + 3 = 40 octets

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

Encore une fois,> <> réussit bien lors d'un autre exercice d'impression de nombres. Exécuter avec le -vdrapeau d'entrée, par exemple

py -3 fish.py -v 4

Explication

&               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
la source
3

C (sans boucles, ouais!) - 72 octets

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

Cela crée une fonction r(n)qui peut être utilisée de cette façon:

main(){ r(5); }

Voyez-le en action, ici sur tutorialspoint.com

Cela nécessite quelques trucs faciles à expliquer. Je pense que cela peut être grandement amélioré.

A. Breust
la source
1
En fait, c'est 75 octets, pas 74. Cependant, vous pouvez le réduire à 72 octets en remplaçant '' par 32 et '\ n' par 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
Très joli truc, merci!
A. Breust
Merci! J'ai fait de mon mieux pour vous hisser dans la catégorie C, mais je n'ai rien pu raccourcir! J'ai donc décidé de raccourcir le vôtre à la place.
FatalSleep
64 octets 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
la source
Pour obtenir des réponses sur ce site, vous devez écrire un programme ou une fonction complète. Et vous devez imprimer le résultat sur stdout ou les renvoyer à partir d'une fonction. N doit être lu depuis l'entrée ou pris comme paramètre de fonction, et non prédéfini comme variable.
jimmy23013
@ user23013 OK, corrigé!
Kasramvd
La définition de la fonction doit être incluse dans le nombre d'octets, donc je ne pense pas que ce soit 61. Il est probablement dans votre intérêt d'appeler la fonction quelque chose de court, comme p. Sur une autre note, vous pouvez supprimer deux espaces - un entre printet '\n'et l'autre entre )))et for.
Sp3000
@ Sp3000 OK, merci de votre attention! fixe !;)
Kasramvd
72:def p(N):print'\n'.join(' '.join(map(str,range(1,i+2)))for i in range(N))
seequ
2

Perl, 28

Lit le paramètre depuis stdin.

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

Depuis la ligne de commande:

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

mais je ne sais pas maintenant comment compter cela (probablement entre 25 et 29).

nutki
la source
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
la source
1
Cela n'échoue-t-il pas si N> = 10?
seequ
@Sieg Oui, vous avez raison. Je viens d'apprendre Python, je cherchais un moyen de convertir la liste d'int en liste de chaînes.
bacchusbeale
63 octets: for i in range(int(input())):print(' '.join("123456789"[:i+1]))- Notez que les chaînes sont traitées comme des listes.
seequ
1

Golfscript 14

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

Attend que le numéro d'entrée soit présent sur la pile.

Exemple en ligne: lien

Cristian Lupascu
la source
1

Clip , 16

Jm[ijkw,1iwS},1n

Explication

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
la source
1

Aller, 93 81 78 93 90 octets

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

Actuel non golfé

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
}

Si nous devons gérer N> 9, nous pouvons utiliser ce qui suit à 78 octets, mais cela nécessite d'importer le fmtpackage.

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

Si nous incluons la déclaration d'importation, je suis maintenant de retour à ma première 93 92 90 octets

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

Testez-le en ligne ici: http://play.golang.org/p/BWLQ9R6ilw

La version avec fmtest ici: http://play.golang.org/p/hQEkLvpiqt

Kristoffer Sall-Storgaard
la source
Je ne sais pas ce que je pense de la distribution de chaînes, mais toute tentative de la transformer en un tableau d'octets la rend simplement plus longue
Kristoffer Sall-Storgaard
Le principal problème que je vois est qu'il ne fonctionne pas pour n> 9. Vous pouvez cependant enregistrer un octet en changeant !=en >.
Geobits
@Bigtoes, corrigé maintenant, je ne sais pas si je suis censé compter la importdéclaration
Kristoffer Sall-Storgaard
Je sais qu'ils sont comptés pour les langues que je connais mieux, donc très probablement oui. Sucks, je sais :)
Geobits
1

ZX / Sinclair BASIC - 39 octets

ZX Basic utilise 1 octet par mot clé (tous les mots en majuscules), ce qui permet de réduire un peu la taille des octets ...

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

En utilisant n = 8

entrez la description de l'image ici

Brian
la source
1
Agréable. Mais ZX basic utilise 6 octets cachés de plus pour chaque littéral numérique (une astuce courante était VAL("1")(6 octets car VAL est 1) au lieu de 1(7 octets))
edc65
1

R, 28

for(i in 1:scan())print(1:i)
freekvd
la source
La sortie est incorrecte pour une valeur d'entrée de 0. En outre, il n'est pas clair si le début [1]de chaque ligne est en violation de la spécification.
Alex A.
@AlexA. si vous regardez attentivement la question, vous verrez mon commentaire demandant quel comportement devrait être pour n = 0. Mais merci de m'avoir pointé dans la bonne direction!
freekvd
J'ai vu le commentaire. Le fait est que cela n'imprime rien pour 0, il imprime 1; 1 0. (Faire semblant ;est un saut de ligne.)
Alex A.
Vous voudrez peut-être également envisager d'utiliser cat(1:i,"\n"). Même s'il est légèrement plus long que print(1:i), il n'inclut pas de début [1]sur chaque ligne.
Alex A.
1

TI-Basic, 28 octets

Input N
For(I,1,N
randIntNoRep(1,N->L1
SortA(L1
Disp L1
End
Timtech
la source
1
Cela ne sort pas comme l'indique le format; le tableau est plutôt affiché, entre parenthèses et tout, sur l'écran d'accueil.
lirtosiast
1

C, 89 caractères

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

Pour éliminer la confusion puts("");. Cela imprime simplement un caractère de nouvelle ligne (comme vu ici ):

Notez que put ne diffère pas seulement des fputs en ce qu'il utilise stdout comme destination, mais il ajoute également automatiquement un caractère de nouvelle ligne à la fin (ce qui n'est pas le cas pour fputs).

Je l'ai légèrement raccourci avec l'algorithme java de @ 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
la source
puts("");ne fait rien. Vous pouvez utiliser char b[999]=""au lieu de char b[999]={0}pour enregistrer 1 caractère.
mch
2
puts("");imprime un caractère de nouvelle ligne.
Felix Bytow
1

Perl: 34 caractères

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

Ce code obtient le numéro d'entrée fourni via la variable spéciale $_.

Felix Bytow
la source
1
La plupart des crochets sont redondants ici: print"@$_\n"for map[1..$_],1..$_fonctionne également.
nutki
J'ai ajusté le code.
Felix Bytow
1

C # - 94 octets

Écrit comme une fonction anonyme qui renvoie une chaîne, qui ne semble pas être interdite par la spécification.

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

Voici une version non golfée (les commentaires sont lus dans l'ordre 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
la source
1

Bash + coreutils, 26 octets

seq $1|sed "x;G;s/\n/ /;h"
  • seq génère simplement les nombres 1 à n
  • sed enregistre la sortie entière pour une ligne donnée dans l'espace d'attente, puis lui ajoute la ligne suivante.
Traumatisme numérique
la source
1

Haskell, 62 57 octets

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

Style sans point. Exemple d'utilisation:

Prelude> f 5
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
nimi
la source
Faire e=enumFromTo 1enregistre 7 octets.
Zgarb
@Zgarb: Merci, mais si je permute enumFromTo 1, je dois aussi donner un nom à la fonction principale, donc c'est 5 octets. Sans le nom, ce serait une letconstruction: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
la source
1
Et alors TableForm[Range/@Range@#]&?
Martin Ender
1
Plus court:Grid[Range/@Range@#]&
alephalpha
Et ça a l'air encore mieux. :) (J'oublie toujours Grid.)
Martin Ender
Mais je ne sais pas s'il n'y a pas d'espace de fin à la fin de chaque ligne.
alephalpha
Oh bon point. :(
Martin Ender
1

Scala, 73 65 62 octets

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

Non golfé

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