Quand j'étais petit, j'aimais beaucoup jouer avec ces jouets:
Ils avaient probablement l'intention de les utiliser pour l'art, mais je les utilisais toujours pour les mathématiques! Fractales, motifs, etc. Une fois, on m'a donné ce défi:
Construisez un triangle sans utiliser aucun des carreaux triangulaires verts.
Ce défi m'a laissé perplexe très longtemps, jusqu'à ce que je tombe par hasard sur un moyen vraiment beau et simple de le faire avec seulement 3 trapèzes:
/\
/_/\
/__\_\
Maintenant, prenez ce triangle et faites-le pivoter:
______
\ \__/
\/ /
\/
En utilisant ces deux triangles, nous pouvons en construire de plus grands. Voici un triangle de hauteur 2:
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
Et voici des triangles de hauteur 3-7:
#3
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
#4
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
#5
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
#6
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
#7
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
Le défi
Ecrivez un programme ou une fonction qui prend un nombre n et imprime un triangle de hauteur n sans triangle . Les espaces de fin sur chaque ligne sont acceptables, et il est également possible d’utiliser une nouvelle ligne. IO peut être dans n'importe quel format raisonnable. L'entrée étant garantie comme un entier positif, vous n'avez pas à vous soucier des nombres négatifs, des nombres décimaux, des non-nombres, etc.
La réponse la plus courte en octets gagne!
la source
Réponses:
CJam, 47 ans
Explication:
Essayez-le en ligne
la source
Ruby, 79
A. (-4 octets,
-1
+1
) est passé de 0-indexé (.times
) à 1-indexé (1.upto
)B. (-5 octets) est passé d'un tableau de trois chaînes de 6 caractères à la sélection d'une sous-chaîne de 6 caractères d'une chaîne de 18 caractères.
C. (-1 octet)
m=n*3
->n*=3
D. (-5 octets) réduit les cinq doubles barres obliques inverses en une seule barre oblique inversée (rendue possible en partie par la réorganisation de la chaîne requise pour le point A)
Ruby, 94
explication
L'unité de base est un losange 3x6 comme suit (le dernier caractère de chaque ligne est dupliqué pour plus de clarté :)
Tout ce que nous avons à faire est d’afficher une fenêtre appropriée de ce modèle. Ruby's
ljust
vous permet de jouer avec n'importe quelle ficelle, pas seulement les espaces. Normalement,ljust
serait utilisé pour compléter une chaîne de caractères imprimables en ajoutant des espaces à la fin, mais ici, nous l’utilisons à l’inverse: pour compléter une chaîne d’espaces en ajoutant des caractères imprimables à la fin.programme non testé
la source
Retina ,
150122118 octetsLa sortie de ce défi a l'air génial, au fait!
L'entrée est unaire. La sortie contient un retour à la ligne final. Le code utilise le codage ISO 8859-1. Notez l'espace de fin sur l'avant dernière ligne.
Essayez-le en ligne
Explication
Si vous souhaitez une explication plus détaillée, commentez ou envoyez-moi un message en discussion.
Merci à Martin d'avoir joué 32 octets au golf.
la source
Le langage d'impression ascii de Tarmo, 46 octets. (non-concurrent)
En regardant des langages de programmation bizarres comme CJam, je suis un peu étonné de la complexité du langage, du naturel et du cryptique, que je voulais "aller hardiment là où aucun homme n’a été auparavant" et inventer mon propre langage. En conséquence, j'ai créé mon propre langage pour l'impression de motifs ascii.
L'idée de base est que vous pouvez définir le premier motif, puis imprimer - en utilisant le même type de caractère "1" ou "2" ou un nombre quelconque - vous pouvez définir votre propre motif d'impression.
Une fois que le motif est défini (commence à partir du numéro jusqu'à la fin du numéro) - les numéros suivants exécuteront l'impression du motif.
Par exemple
Des sorties comme celle-ci:
Définira le motif 1, puis l’imprimera immédiatement. Le motif est défini tout ce qui est séparé avec '|' personnage. 0 à la fin - agit comme une terminaison de motif.
Des caractères spéciaux tels que '$' sont réservés comme saut de ligne et '~' pour l’espacement - à la moitié - d’un modèle spécifique.
Le texte en sortie sera-t-il comme ceci:
Ensuite va pour les boucles. Celui-ci doit être facilement visible - j'ai donc conservé les {} crochets pour les boucles, mais les noms de variables sont nommés automatiquement - le premier crochet utilise donc 'une' variable, le second 'b', etc. L'itération ira toujours de 0 à un nombre spécifique - et ce nombre est défini avant les {} parenthèses.
'n' est une variable réservée pour la saisie de la fonction entière.
Donc code:
Sorties de volonté (avec n == 4):
Et '#' est un modificateur spécial pour les espaces blancs de découpe.
Et enfin toute la solution:
DrawPatterns.cs:
Avec des arguments de ligne de commande comme celui-ci: -d "1 / \ | / _ / \ | / ___ \ 2 __ | / 0n {na-1 {½} 1a {2 # 1} $}" 3
Sera sortie ceci:
la source
JavaScript (ES6), 119 octets
Où
\n
représente le caractère de nouvelle ligne littéral. Si une ligne principale avec desn*3
espaces et une nouvelle ligne est acceptable, vous.slice(1)
pouvez la supprimer pour une sauvegarde de 9 octets.la source
Python 2, 118 octets
Une approche similaire à la réponse Ruby niveau de la rivière St .
Essayez-le en ligne
la source
Python 2, 142 octets
Le principe est très similaire à celui des autres réponses: prenez trois chaînes répétées, puis superposez-les de manière à ne couper que certaines d'entre elles pour obtenir le triangle, puis placez-les à gauche.
la source
C ++, 395 octets
Première fois le code de golf avec une taille glorieuse de 395 octets en C ++. Dans mon cas, cela ressemble un peu à un concours d’obscurcissement: D
la source
Pyth, 66 octets
Essayez-le en ligne!
la source