Aujourd'hui, nous allons construire une pyramide en lettres! Voici un exemple de pyramide de lettres pour les 5 premières lettres:
Écrivez les 5 premières lettres avec un espace entre, d'abord ascendant puis descendant.
A B C D E D C B A
Faites la même chose pour les quatre premières lettres de la ligne ci-dessus, mais avec deux espaces de tête supplémentaires:
A B C D C B A A B C D E D C B A
Répétez la même étape jusqu'à ce que la dernière ligne soit juste «A»
A A B A A B C B A A B C D C B A A B C D E D C B A
Répétez les étapes deux et trois en descendant au lieu de monter:
A A B A A B C B A A B C D C B A A B C D E D C B A A B C D C B A A B C B A A B A A
Ce même modèle peut être étendu jusqu'à 26 caractères. Votre défi consiste à écrire un programme ou une fonction qui prend un entier en entrée et produit la pyramide de lettres correspondante. Vous pouvez choisir d'utiliser des caractères majuscules ou minuscules. Vous pouvez toujours supposer que l'entrée sera un entier [1, 26]
et que la sortie peut avoir n'importe quel format raisonnable pour une chaîne 2D. Par exemple, une chaîne contenant des retours à la ligne, un tableau de caractères, l'impression dans un fichier, etc. Chaque ligne peut comporter des espaces de fin, et vous pouvez éventuellement générer un retour à la ligne de fin.
Voici quelques exemples d'entrées / sorties:
1:
A
2:
A
A B A
A
3:
A
A B A
A B C B A
A B A
A
5:
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
13:
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D E F E D C B A
A B C D E F G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H I J I H G F E D C B A
A B C D E F G H I J K J I H G F E D C B A
A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K L M L K J I H G F E D C B A
A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K J I H G F E D C B A
A B C D E F G H I J I H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G F E D C B A
A B C D E F E D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
26:
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D E F E D C B A
A B C D E F G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H I J I H G F E D C B A
A B C D E F G H I J K J I H G F E D C B A
A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K L M L K J I H G F E D C B A
A B C D E F G H I J K L M N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X Y X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X Y X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N M L K J I H G F E D C B A
A B C D E F G H I J K L M L K J I H G F E D C B A
A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K J I H G F E D C B A
A B C D E F G H I J I H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G F E D C B A
A B C D E F E D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
Comme toujours, il s'agit de code-golf, donc les failles standard s'appliquent et la réponse la plus courte en octets l'emporte!
la source
Réponses:
Python,
184 174169 octetsEdit: sauvé 5 octets grâce à @ nedla2004
la source
g
trois lignes. 2.) Attribuezrange
à une variable. Vous pouvez voir les deux ici . (Remarque: avantdef f(x,y,z):
qu'il n'y ait un espace, avant lafor
boucle, il y a un onglet.range
s que vous pouvez remplacer?R((a-i))
enR(a-i)
etR((a-i-1))
enR(a-i-1)
, non?for
boucles dans la compréhension de la liste.print
.05AB1E , 13 octets
Code:
Explication:
Utilise l' encodage CP-1252 . Essayez-le en ligne!
la source
MATL ,
2524 octetsEssayez-le en ligne!
Alternatives plus longues:
1Y20hiZv&+G-t0>*1&!t0*hTe)
(26 octets)Zv&+64+G-t64>*l2&Y"tZyP:o*c
(27 octets)Explication
la source
V , 45 octets
Essayez-le en ligne!
Cela a fini par être beaucoup moins golfique que je ne l'avais espéré, donc je ne vais pas encore publier d'explication. J'espère que je pourrai le réduire un peu plus en premier. Comme d'habitude, voici un hexdump:
la source
J, 34 octets
Prend le nombre en entrée et renvoie un tableau de caractères 2D.
Explication
Cas de test décomposé
Essayons ceci avec une entrée
5
.Cas de test
la source
Gelée , 13 octets
TryItOnline!
Comment?
la source
Pyke, 12 octets
Essayez-le ici!
Désactiver les avertissements pour la sortie spécifiée
la source
C #,
266263262261245238235232 octetsGolfé:
Non golfé avec des commentaires:
Essayez-le: http://rextester.com/WIL67940
Renvoie la liste des chaînes. Chaque chaîne contient une ligne de sortie.
Je l'ai fait pour le plaisir et l'entraînement. Je me rends compte que gagner n'importe quel code-golf avec C # est hors de portée.
EDIT1: modification de l'interpolation de chaîne en
+
opérateur.EDIT2:
c <= 'A' + i
=>c < 'B' + i
EDIT3: Échangé
char
avecvar
.EDIT4: type de retour modifié de
void
àList
.EDIT5: Suppression d'une variable inutile.
EDIT6: Nouvelle façon de séparer les moitiés de ligne.
EDIT7: @Kaspar Kjeldsen, merci.
la source
C,
124123 octetsÉconomiser 1 octet grâce à Mukul Kumar
Actuellement, je n'arrive pas à transformer la double boucle en une seule, je vais la laisser comme ça pour le moment.En fait, c'est plus grandJe laisse donc la boucle imbriquée.
Utilise la norme de Manhattan pour obtenir la forme du diamant.
Non golfé:
la source
j==2*n
parj-2*n
et en échangeant les? ()
valeurs par:()
valuePython,
158154140 140139 octetsCeci est mon premier post alors soyez doux! J'ai beaucoup utilisé [:: - 1] pour inverser les chaînes, donc peut-être y a-t-il une optimisation à faire. Commentaires bienvenus.
MODIFICATIONS:
Merci @Rod pour le pointeur vers le lien utile vers le sujet de golf du code Python et aussi pour me rappeler que les lettres ont besoin d'espaces entre elles. Merci également à @wec pour les conseils généraux sur la suppression d'espaces.
la source
=
), après des virgules et avant la parenthèse ouvrante dans l'instruction print. L'indentation Python peut être de n'importe quel niveau tant qu'elle est cohérente, vous pouvez donc enregistrer 3 caractères en indépendantant votre instruction d'impression d'un seul espace au lieu de quatre. Ce sont les économies faciles que je peux voir.z
qu'une seule fois, vous n'avez pas besoin d'utiliser une variable, mettez simplement les*2-1
directement dans lacenter
fonction. Juste un détail, la sortie doit avoir des espaces entre les lettres,' '.join
juste après l'impression devrait suffire (mais vous devez retravailler les*2-1
pour obtenir la bonne valeur).range
et pour[:]
est0
, donc vous n'avez pas besoin de le mettre explicitementBrain-Flak, 630 + 3 = 633 octets
Cela nécessite que le
-A
drapeau s'exécuteEssayez-le en ligne
Ce n'est pas un grand golf mais ce défi est assez difficile à Brain-Flak
la source
Pyth, 23 octets
Essayez-le en ligne
la source
TSQL, 261 octets
Requête sur une ligne - pas de boucle
Malheureusement, le violon mange les espaces au début des lignes de sortie. Les espaces seront là s'ils sont exécutés dans SQL Server Management Studio
Violon
la source
Rubis,
13711510010084 octetsMerci à manatwork pour les commentaires.
la source
0..n-1
→0...n
.n>0?…:""
.Befunge 93 , 175 octets
Essayez-le en ligne!
Probablement pas très bien joué au golf. Tant pis. C'était assez difficile avec befunge:
Bonne chance pour comprendre comment cela fonctionne! Je sais à peine.
la source
C #, 199 octets
Comme toujours, C # n'est pas vraiment un langage de golf, mais je préfère beaucoup plus le code "lisible" que le code ésotérique. J'ai aussi fait ça pour le plaisir :)
Voici une version non golfée, vous pouvez donc facilement comprendre ce que j'ai fait:
(Je pense que cela pourrait être beaucoup optimisé cependant ..)
la source
Java, 213 octets
Non golfé:
la source
Java, 394 octets
Je fais normalement du C #, mais c'est bien de le mélanger ...
Golfé:
Non golfé:
Tester:
la source
R,
1009787 octets(Mise à jour:
scan()
pour entrée; abusé (x-1): 1 == x: 2-1.)Pas trop minable pour l'un des langages de mots-clés par son apparence (ceux à caractère spécial vont toujours être meilleurs).
la source
PHP,
122116 octetsexiste-t-il un moyen plus court?
la source
JavaScript (ES6), 121 octets
Où
\n
représente le caractère de nouvelle ligne littéral. Sorties en minuscules.la source
Lot, 269 octets
La ligne 2 se termine par 25 espaces; cela signifie que lorsque l'index de l'alphabet devient négatif, ces carrés restent simplement vides.
la source