Votre tâche consiste à écrire un programme ou une fonction qui imprime un triangle ASCII. Ils ressemblent à ceci:
|\
| \
| \
----
Votre programme prendra une seule entrée numérique n
, avec les contraintes 0 <= n <= 1000
. Le triangle ci-dessus avait une valeur de n=3
.
Le triangle ASCII aura des n
barres obliques inverses ( \
) et des barres verticales ( |
), des n+1
lignes et des tirets ( -
), et chaque ligne aura un nombre d'espaces égal au numéro de ligne (basé sur 0, c'est-à-dire que la première ligne est la ligne 0) en plus de la ligne finale .
Exemples:
Contribution:
4
Sortie:
|\
| \
| \
| \
-----
Contribution:
0
Sortie:
Dans ce cas de test, la sortie doit être vide. Pas d'espace.
Contribution:
1
Sortie:
|\
--
L'entrée et la sortie doivent être exactement comme je l'ai spécifié.
C'est du code-golf , alors visez le code le plus court possible!
la source
0
peut avoir une sortie inattendue car c'est un cas de bord (d'autant plus que vous avez demandé que le nombre de tirets doit être un de plus que le nombre d'entrée)Réponses:
Gelée , 14 octets
Essayez-le en ligne!
Comment ça marche.
la source
C, 58 octets
-
Merci à @Steadybox qui les commentaires sur cette réponse m'ont aidé à raser quelques octets dans ma solution ci-dessus
la source
2*n
là deux fois et ça me dérange, quelqu'un peut-il penser à un moyen intelligent de le raccourcir d'une manière ou d'une autre?Javascript (ES6),
9785817574 octetsIl s'avère que je n'utilisais pas assez de récursivité
la source
05AB1E ,
161516 octetsUn octet enregistré grâce à Adnan
Essayez-le en ligne!
Explication
la source
ð×.svy¦…|ÿ\}¹>'-×»
, je suppose que mon idée.s
n'était pas aussi bonne que je le pensais. Bon usage deÿ
, je n'ai jamais vu ça auparavant..s
de commencer,<Ýð×
mais j'ai rencontré des problèmes avec le cas particulier de ces méthodes.FðN×…|ÿ\}Dg'-×»
pour 15 octetsDg
! Merci :).s
a également entraîné des tableaux imbriqués et un aplatissement qui nécessitaient plus d'octets.V ,
181716 octets1 octet enregistré grâce à @ nmjcman101 pour avoir utilisé une autre façon de ne rien produire si l'entrée est
0
Essayez-le en ligne!
Hexdump:
Explication (obsolète)
Nous avons d'abord une boucle pour vérifier si l'argument l'est
0
. Si c'est le cas, le code ci-dessous s'exécute (|\
est écrit). Sinon, rien n'est écrit et le tampon est vide.Maintenant que nous avons atteint le sommet du triangle, nous devons créer son corps.
Nous avons maintenant une ligne supplémentaire au bas du tampon. Cela doit être remplacé par l'
-
art.Cette réponse serait plus courte si nous pouvions tout ce que nous voulons pour l'entrée
0
V ,
1413 octetsEssayez-le en ligne!
la source
«
bien sûr. Intelligent! :)C #, 93 octets
Fonction anonyme qui renvoie le triangle ASCII sous forme de chaîne.
Programme complet avec fonction non testée et commentée et cas de test:
la source
Python 2 , 69 octets
Essayez-le en ligne!
la source
"".join
et en le remplaçant par l'*
opérateur et l'sep
argument dans la fonction de veille, donclambda x:print(*['|'+' '*n+'\\'for n in range(x)]+['-'*-~x*(x>0)],sep="\n")
CJam ,
242221 octets1 octet enregistré grâce à Martin Ender
Essayez-le en ligne!
Explication
la source
SmileBASIC, 51 octets
la source
PowerShell ,
5167 octetsEssayez-le en ligne!
(Augmentation d'octets pour ne pas prendre en compte la nouvelle ligne)
Prend l'entrée
$n
et vérifie qu'elle est différente de zéro. Boucle ensuite pour construire le triangle et termine avec une ligne de-
. ImpliciteWrite-Output
se produit à la fin du programme.la source
Rétine , 39 octets
Essayez-le en ligne
Convertissez l'entrée décimale en unaire. Remplacez chacun
1
par|<N-1 spaces>\¶
, imprimez et annulez le remplacement. Remplacez chacun1
par un trait d'union et le dernier trait d'union par 2 traits d'union. Tadaa!la source
Lisp commun,
8986 octetsCrée une fonction anonyme qui prend l'entrée n et imprime le triangle sur
*standard-output*
(stdout, par défaut).Golfé
Non golfé
Je suis sûr que je pourrais raccourcir cela d'une façon ou d'une autre.
la source
C
1019375 octetsVersion non golfée
@Steadybox Merci de l'avoir signalé, cela a beaucoup de sens.
la source
printf("%c",'_');
si verbeux?i;f(n){for(i=0;i++<n;)printf("%c%*c\n",124,i,92);for(;n--+1;)printf("-");}
i;f(n){for(i=0;i++<n;)printf("|%*c\n",i,92);for(;n--+1;)printf("-");}
n--+1
peut être raccourci en~n--
Fusain , 15 octets
Essayez-le en ligne!
Panne
la source
»
peut être omise.Japt , 20 octets
Enregistré 2 octets grâce à @ETHproductions
Essayez-le en ligne!
Explication
la source
o@'|+SpX +'\Ãp'-pUÄ)·
et en raison d'un bogue (vraiment un effet secondaire involontaire des fonctions automatiques), vous pouvez retirer le'
dans'-
.p
. C'est ainsi que vous pouvez faire par exemplem*2
pour doubler chaque élément, oump2
pour mettre en carré chacunJ, 20 octets
-13 octets grâce à bob
Essayez-le en ligne!
original: 33 octets
non golfé
Essayez-le en ligne!
la source
*,&'-' '|',.'\'{."0~_1-i.
*,&'-' '|',.' \'{~=@i.
Pyke,
1817 octetsEssayez-le ici!
la source
Python2, 73 octets
Un programme complet. J'ai également essayé l'interpolation de chaînes pour la dernière ligne, mais il s'est avéré être plus long de quelques octets: /
Une autre solution à 73 octets:
Cas de test
la source
MATL , 19 octets
Essayez-le en ligne!
la source
QBIC , 41 octets
Explication
la source
R, 101 octets
Ce code est conforme au
n=0
cas de test si vous ne considérez queSTDOUT
!En effet, la
stopifnot(n>0)
partie arrête l'exécution du script, affiche rien àSTDOUT
mais écritError: n > 0 is not TRUE
àSDTERR
.Non golfé:
la source
Python 2 , 62 octets
Essayez-le en ligne!
Imprime ligne par ligne, en ajoutant à chaque fois un autre espace avant la barre oblique inverse. Si une fonction qui n'imprimait pas était autorisée, ce serait probablement plus court.
la source
JavaScript (ES6), 71 octets
Sorties vers la console. Économisez 6 octets si l'impression sur le shell JavaScript SpiderMonkey est acceptable. Enregistrez 13 octets si le retour de la sortie est acceptable.
la source
$`
motif, mais je ne sais pas si j'y aurais quand même pensé. Agréable.Python 2 , 67 octets
Une autre fonction en Python 2, utilisant
rjust
.Essayez-le en ligne!
la source
Python 3 , 60 octets
Essayez-le en ligne!
Deux autres solutions avec le même nombre d'octets.
la source
Perl, 63 octets
Non golfé:
$"
est le séparateur de liste, qui est par défaut "".$/
est le séparateur d'enregistrement de sortie, qui est par défaut "\ n".$_
est la variable de boucle implicite.la source
$n=<>
?Haskell ,
8265 octetsEssayez-le en ligne! Usage:
Ou plus joliment:
la source
Pyth,
2318 octetsSuite de tests disponible en ligne.
Merci à Ven d' avoir joué 5 octets.
Explication
la source
|
pour un octet supplémentaire.Javascript 101 (programme complet), 94 (sortie de fonction), 79 (retour) octets
Programme complet
Ne fonctionnera pas dans Chrome (car le processus n'existe pas apparemment)
Ne fonctionnera pas dans TIO (car l'invite n'est apparemment pas autorisée)
Fonction avec impression EXACT
Essayez-le en ligne
Fonction avec chaîne de retour
Essayez-le en ligne
La répétition de caractères en Javascript est stupide, tout comme la suppression des sauts de ligne en sortie
la source
Python 2 , 82 octets
Essayez-le en ligne!
Plus longtemps que l'autre Python répond mais une fonction récursive juste pour être différent.
Cela me semble inutile d'utiliser deux
print
déclarations, mais je ne peux pas trouver un moyen plus court de contourner cela. Aussi lesexit()
déchets 7 pour l'empêcher d'imprimer un nombre décroissant de-
sous le triangle.la source
-~c*(c>0)
sur la dernière ligne pour économiser 3 octets :)c and-~c
.