Étant donné un nombre N
, sortez un triangle à angle droit NxN, où chaque ligne i
est 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.
Réponses:
Joe ,
53 octets (+2 ou +3 pour l'-t
indicateur)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.
Ici,
R
donne la plage de 0 à n, exclusif. En\A
prend ensuite des préfixes successifs (A
c'est la fonction d'identité). Exemples:Avec
-t
indicateur (remarque: c'est maintenant la sortie standard même sans indicateur):Sans ça:
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
-t
peut donc être supprimée.Maintenant,
Rn
donne une plage de 0 à n, exclusif. Si donné 0, il renvoie une liste vide.1+
ajoute 1 à chaque élément de cette plage.1R
mappe les valeurs sur des plages de 1 à x. Les menteurs vides, lorsqu'ils sont mappés, renvoient des listes vides.Exemple de sortie:
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
-t
flag.Ancien: 5 octets (avec le
-t
drapeau)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
-t
drapeau donne la sortie sous forme de table de type J.Remarque: la langue est très nouvelle et incomplète, mais la dernière version a été publiée avant ce défi.
la source
Python 3,
4845 octetsHourra pour les effets secondaires.
la source
print
pour exécuter leprint
s dans l'ordre inverse.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.
la source
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.
Essayez-le en ligne ici.
la source
]\@i.
pour obtenir;@(<@,&LF@":@:>:@:]\@i.)
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:
Et encore une fois, il peut être amélioré si PHP est configuré pour ignorer les erreurs (52 octets):
Edit: Austin a suggéré une version de 60 octets dans les commentaires:
Ce qui peut être amélioré si nous n'affichons pas les erreurs PHP (59 octets):
$a
stocke la ligne suivante qui sera imprimée, et chaque fois qu'elle est imprimée, un espace et le numéro suivant (print
revient toujours1
) lui sont concaténés.Fonctions récursives (65 octets):
Fonction récursive plus courte, avec rapport d'erreurs désactivé (64 octets):
Fonction récursive encore plus courte, avec rapport d'erreurs désactivé et une ligne vide avant la sortie réelle (62 octets):
Juste pour des fonctions amusantes et non récursives:
la source
for($a=1;@$i<$n;$a.=" ".(@++$i+print"$a\n"));
for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));
(44 octets)function f($n){for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));}
, ce qui fait 60 octets.for($a=1;$i++<$n=$_GET[n];$a.=" ".($i+print"$a\n"));
-> essayez ceci (code complet, en utilisant le paramètre urln
avec le numéro)CJam,
1312 octetsComment ça marche :
Essayez-le en ligne ici
la source
Pyth, 9 octets
Vraiment pensé que cela peut être fait plus court, mais cela ne semble pas le cas.
Essayez-le en ligne .
la source
VQaYhNjdY
. Si seulementa
renvoyé la liste, alors quelque chose commeVQjdaYhN
serait 8.a
brièvement utilisé pour renvoyer la liste annexée.N+1+1-1
?r
est la fonction de plage Python, donc le -1 (r1N
cré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 ajouter2
àN
.r1hhN
se traduit directement parrange(1, N+1+1)
. Une autre possibilité seraitr1+N2
(range(1, N+2)
).mhdhN
, mais c'est une approche complètement différente.JavaScript (ES6) 49
52Une 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
Iteraive 52
la source
Java,
8584 octetsC'est étonnamment court en Java.
Dentelé:
1 octet grâce à Bigtoes / Geobits
la source
b+=...
dansprintln(b+=...)
.Prolog - 119
la source
Python 2 -
625465 octetsla source
n
doit être donné en entrée du programme, non initialisé dans une variable.N
en faisantN=input()
ou quelque chose de similaire, afin que votre programme puisse être exécuté comme tel. Voici une discussion Meta sur le sujet.J, 9 caractères
Comme verbe tacite et monadique.
i. y
- les nombres de0
ày - 1
.1 + i. y
- les nombres de1
ày
.": y
- le vecteury
représenté par une chaîne.":\ y
- chaque préfixe dey
représenté sous forme de chaîne.":\ 1 + i. y
- chaque préfixe des nombres de1
ày
représenté sous forme de matrice de caractères.la source
> <> (Poisson) ,
4037 + 3 = 40 octetsEncore une fois,> <> réussit bien lors d'un autre exercice d'impression de nombres. Exécuter avec le
-v
drapeau d'entrée, par exempleExplication
la source
C (sans boucles, ouais!) - 72 octets
Cela crée une fonction
r(n)
qui peut être utilisée de cette façon:Voyez-le en action, ici sur tutorialspoint.com
Cela nécessite quelques trucs faciles à expliquer. Je pense que cela peut être grandement amélioré.
la source
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
la source
p
. Sur une autre note, vous pouvez supprimer deux espaces - un entreprint
et'\n'
et l'autre entre)))
etfor
.def p(N):print'\n'.join(' '.join(map(str,range(1,i+2)))for i in range(N))
Perl, 28
Lit le paramètre depuis stdin.
Depuis la ligne de commande:
mais je ne sais pas maintenant comment compter cela (probablement entre 25 et 29).
la source
Python
la source
for i in range(int(input())):print(' '.join("123456789"[:i+1]))
- Notez que les chaînes sont traitées comme des listes.Golfscript 14
Attend que le numéro d'entrée soit présent sur la pile.
Exemple en ligne: lien
la source
Clip , 16
Explication
la source
Aller,
9381789390 octetsActuel non golfé
Si nous devons gérer N> 9, nous pouvons utiliser ce qui suit à 78 octets, mais cela nécessite d'importer le
fmt
package.Si nous incluons la déclaration d'importation, je suis maintenant de retour à ma première
939290 octetsTestez-le en ligne ici: http://play.golang.org/p/BWLQ9R6ilw
La version avec
fmt
est ici: http://play.golang.org/p/hQEkLvpiqtla source
!=
en>
.import
déclarationZX / 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 ...
En utilisant n = 8
la source
VAL("1")
(6 octets car VAL est 1) au lieu de1
(7 octets))R, 28
la source
[1]
de chaque ligne est en violation de la spécification.1; 1 0
. (Faire semblant;
est un saut de ligne.)cat(1:i,"\n")
. Même s'il est légèrement plus long queprint(1:i)
, il n'inclut pas de début[1]
sur chaque ligne.TI-Basic, 28 octets
la source
C, 89 caractères
Pour éliminer la confusion
puts("");
. Cela imprime simplement un caractère de nouvelle ligne (comme vu ici ):Je l'ai légèrement raccourci avec l'algorithme java de @ TheBestOne:
la source
puts("");
ne fait rien. Vous pouvez utiliserchar b[999]=""
au lieu dechar b[999]={0}
pour enregistrer 1 caractère.puts("");
imprime un caractère de nouvelle ligne.Perl: 34 caractères
Ce code obtient le numéro d'entrée fourni via la variable spéciale
$_
.la source
print"@$_\n"for map[1..$_],1..$_
fonctionne également.C # - 94 octets
Écrit comme une fonction anonyme qui renvoie une chaîne, qui ne semble pas être interdite par la spécification.
Voici une version non golfée (les commentaires sont lus dans l'ordre BDCA):
la source
Bash + coreutils, 26 octets
seq
génère simplement les nombres 1 à nsed
enregistre la sortie entière pour une ligne donnée dans l'espace d'attente, puis lui ajoute la ligne suivante.la source
Haskell,
6257 octetsStyle sans point. Exemple d'utilisation:
la source
e=enumFromTo 1
enregistre 7 octets.enumFromTo 1
, je dois aussi donner un nom à la fonction principale, donc c'est 5 octets. Sans le nom, ce serait unelet
construction:let e=enumFromTo 1 in (putStr.unlines.map(unwords.map show.e).e) 5
Mathematica, 32
la source
TableForm[Range/@Range@#]&
?Grid[Range/@Range@#]&
Grid
.)Scala,
736562 octetsNon golfé
la source