Vous devez imprimer ce texte exact:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGFEDCBA
ABCDEFEDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
Spécifications
- Les nouvelles lignes de fin sont autorisées à la fin de la sortie.
- Des espaces de fin supplémentaires (U + 0020) sont autorisés à la fin de chaque ligne, y compris les nouvelles lignes de fin.
- Vous pouvez utiliser toutes les minuscules au lieu de toutes les majuscules, mais vous ne pouvez pas imprimer partiellement minuscule, partiellement partiellement majuscule.
- Vous pouvez renvoyer le texte sous forme de sortie de fonction au lieu de l'imprimer dans un programme complet.
Notation
Comme il s'agit d'un triangle et que celui-ci a 3 côtés et que 3 est un petit nombre, votre code doit être petit en termes de nombre d'octets.
code-golf
kolmogorov-complexity
alphabet
Fuite Nun
la source
la source
Réponses:
Vim, 37 octets
Légende
la source
:h<_↵↵↵YZZP
), puis enregistre une macro (qq…q
) qui coupe de façon répétée une lettre de la ligne supérieure, en fait deux copies pour faire grandir le triangle verticalement, puis ajoute la lettre coupée à toutes les lignes. pour le développer horizontalement. Je répète cette macro 24 fois de plus pour tracer le triangle entier.Logo,
232 207 196190 octetsEst-ce que quelqu'un a dit des triangles?
Sortez votre boussole et votre rapporteur et procédons de manière graphique. La géométrie utilise un triangle équilatéral pour aligner les résultats. J'avais précédemment un triangle isocèle, mais celui-ci impliquait trop de décimales. Cette modification a également compacté la sortie, réduisant ainsi le nombre de préparations d'écran et de modifications de polices que je devais faire.
J'ai utilisé l' interprète en ligne Calormen pour étoffer celui-ci. Si vous ne disposez pas de suffisamment d’écran, cela s’emballe, mais vous pouvez aussi manipuler des chiffres pour s’occuper de cela. J'ai utilisé le mode plein écran "F11" sur mon navigateur.
La
r
procédure dessine une ligne den
caractères. Le caractère est déterminé automatiquement en fonction du nombre de segments à utiliser. Leb
paramètre indique la quantité de rotation temporaire à effectuer pour que les lettres soient orientées dans la bonne direction. Lel
paramètre détermine la distance linéaire entre les lettres.La
t
procédure passe à la position suivante et appelle lar
fonction quatre fois pour créer un triangle, en effectuant une rotation si nécessaire. Je l'ai appelé deux fois pour le côté vertical car cela prenait moins d'octets que si on l'appelait une fois avec un traitement spécial. La fin de la procédure positionne la tortue pour le début du prochain triangle, une étape plus haut.Z
est un cas spécial, nous l’imprimons donc directement et nous tournons comme si nous venions de terminer un triangle. Enfin,t
est appelé 25 fois.la source
Haskell, 58 octets
Définit une fonction
t
qui renvoie la sortie sous forme de chaîne.la source
Gelée ,
16 à13 octetsMerci à @ LeakyNun pour le golf de 3 octets!
Essayez-le en ligne!
Comment ça fonctionne
la source
Python, 74 octets
Une fonction Python 2 qui imprime et ne prend aucun argument. L'idée principale est de générer le motif triangulaire aller-retour avec récursivité. Considérons d’abord cette fonction plus simple qui imprime les lettres «A» jusqu’à «Z» et de nouveau à «A»:
La fonction commence par imprimer "A" (code 65), puis revient à imprimer "B" (66) et ainsi de suite sur "Z" (90). A partir de là, ça cesse de récurer. En redescendant la pile récursive, il imprime le caractère
t
imprimé sur le même calque, de "Y" à "A".Le code principal fait la même chose, à la différence qu’il s’accumule
s
jusqu’à présent dans la chaîne de lettres et imprime la chaîne en haut et en bass+s[-2::-1]
.Merci à xsot pour 2 octets.
En Python 3, la même chose est un octet plus court (73 octets) en mettant tout sur une seule ligne.
la source
f(x=66,s='A')
. Cela vous permet de mettre à jours
l'appel de fonction à la place du corps de la fonction.brainfuck,
1733121119 octetsVersion légèrement plus lisible:
Explication à venir éventuellement.
la source
05AB1E ,
20 13 126 octetsSauvegardé 2 octets grâce à Adnan.
Sauvegardé 6 octets grâce à Magic Octopus Urn et à de nouvelles fonctionnalités linguistiques.
Essayez-le en ligne!
Explication
la source
Œ26£
en.p
, qui est la commande prefix. En outre, vous pouvez changerD,
à=
, qui imprime sans popping.gF,
!Â
est très agréable et une fonctionnalité vraiment chouette.û
est malheureusement plus récent que le défi et rendrait cette réponse non concurrente.J,
262322 octetsExplication
la source
f=:,1}.|.
essayez ceciPython 3, 97 octets
Ideone ça!
la source
'\n'.join(a+a[-2::-1])
Ruby, 71 octets
Essayez-le sur repl.it
la source
> <> , 60 octets
Essayez-le en ligne!
la source
C,
272247234230144 144137 octets:( Sauvegardé de nombreux octets (
272 -> 230
) dans ma méthode précédente grâce aux excellents conseils et astuces de sigalor concernant le golf ! )( Sauvegardé près de 100 octets (
230 -> 144
) en passant à une meilleure méthode. )Ma première réponse dans
C
. Je viens de commencer l'auto-apprentissage récemment, alors voyons comment ça se passe.C it en action! (Idéone)
la source
main()
le type de retour et même le#include <stdio.h>
. GCC (et aussi des sites comme Ideone) est d'accord avec ça. Ensuite, vous pouvez «externaliser» les définitions de variable dans la liste de paramètres d'une fonction. Laisserfor(int i=65;...
devenirfor(i=65...
et changermain()
enmain(i)
. Faites la même chose pour toutes les autres variables int également (GCC utilise par défaut les types manquantsint
).main()
pourmain(i)
?i
variable dans l'initialisation de la boucle for, vous devez la déclarer ailleurs. Et comme (au moins en C) les paramètres d’une fonction peuvent être utilisés comme des variables normales, il ne devrait y avoir aucun problème. Btw, quel compilateur utilisez-vous?C
à Ideone. Je reçois plusieurs<variable> undeclared
erreurs.JavaScript (ES6), 81 octets
la source
Mathematica 59 octets
la source
//Column
de la fin et préfixer votre code avec desColumn@
œuvres.〚
et〛
en octets simples. Je doute qu'il existe une page de codes à un octet qui est également prise en charge par Mathematica. Ils avaient trois octets en UTF-8, donc ils ne sauvegardent pas vraiment rien[[...]]
. Je ne sais pas non plus à quel point la légitimitéColumn
est légitime, car elle s’affiche comme une liste de lignes dans un bloc-notes Mathematica. L'exécution de ce code à partir d'un fichier de script n'afficherait rien. Cependant,Print/@
est le même nombre d'octets et fonctionne dans les deux cas.[what you see](actual link)
. Ex.[Example Link](https://www.example.com)
, qui montre comme exemple LinkDyalog APL, 18 octets
la source
R,
63 6159 octetsUtilement
LETTTERS[0]
ne renvoie aucun caractère.Edit: perdu un grâce à @leakynun
Edit: deux autres grâce à @plannapus
la source
\n
TSQL, 159 octets
Violon
la source
Javascript (en utilisant une bibliothèque externe-Enumerable), 135 octets
Lien vers la bibliothèque: https://github.com/mvegh1/Enumerable
Explication de code: Créez une plage d’entités commençant à 1, pour un compte de 51. Pour chacune d’elles, écrivez une ligne en fonction de la variable pred. Faites de la magie JS avec des variables globales et la mise en cache ... et le tour est joué. Pour chaque int de WriteLine, nous créons la plage de gauche des entrées et les stockons dans un "g" global, ainsi que la jonction de chaînes (écriture) avec un
""
délimiteur et mappons chaque int sur le mappage de chaîne sur le code de caractère int. Ensuite, nous concattrons le côté droit en prenant le renversement de cette séquence (et en sautant le premier élément car cela correspondra au dernier élément de la commande d'origine ...), en écrivant avec la même logique. EDIT: Mise à jour des composants internes de Write dans la bibliothèque. Une séquence vide écrira une chaîne vide au lieu de null maintenant. Cela a également rasé 15 octets de la réponsela source
import sympy
oufrom sympy import*
au sommet. Les réponses de Bash + x sont différentes car il vous suffit d'installer x et non de l'activer.sympy
,numpy
,scipy
, etc. tout le temps.Powershell,
6152 octetsMerci à TimmyD d’avoir économisé 9 octets!
Parcourt les valeurs ASCII pour les lettres majuscules en avant, puis en arrière. Pour chaque numéro, cela crée un tableau des X premiers chiffres, supprime le X-1er numéro, puis ajoute l'inverse des premiers X chiffres, qui sont tous ensuite convertis en caractères et réunis dans une chaîne.
la source
65..90..65
sur un caprice plus tôt sans succès. Je suppose que j'ai oublié de pouvoir additionner les gammes.Cheddar ,
10296796967 octets17 octets grâce à Downgoat et source d’inspiration pour 10 autres.
Le fait que les chaînes puissent concaténer mais pas les tableaux signifie que je devrais convertir les deux plages en chaînes, concaténer, puis reconvertir en tableaux.
De plus, le fait de
vfuse
produire un newliens de premier plan signifie que j’aurais besoin de générer la première ligne manuellement puis de concaténer le reste.@"
en tant que dyade (fonction à deux arguments) peut convertir directement en chaîne, mais ne fonctionne pas pour la plage inversée (si le premier argument est plus grand que le second).Gamme était demi-inclus. Après le correctif, il est devenu inclusif.
Usage
Cheddar, 55 octets (non concurrents)
Dans la dernière version avec tous les correctifs, la réponse est:
mais c'était fait après le challenge.
la source
@"(1|>26)
peut être1@"26
String.letters
peut être(65@"91)
String.letters.slice(0,i)
pourrait peut-être être65@"(66+i)
C, 93 octets
Appel
f()
sans arguments.Essayez sur ideone .
la source
VBA, 94 octets
Appeler dans la fenêtre immédiate avec? T
Juste pour expliquer ce qui se passe: j’utilise deux fois la fonction Abs pour refléter à la fois le chemin de l’alphabet et la longueur de la ligne. Il est bien adapté à la tâche en raison de la valeur extrême unique dans les deux cas, qui correspond au passage par zéro de la variable pré-Abs.
En tant que simple jeu de commandes dans la fenêtre Immédiat de VBA, plutôt qu’un programme ou une fonction, les éléments suivants auraient besoin de 72 octets:
(avec merci à @GuitarPicker)
la source
Function T:
terminer par:?T
(bien que cela ne fonctionne qu'une seule fois, car après cela, vous devrez réinitialiser T sur "" - mais qui a besoin de plus d'un de ces triangles?)?
vous allez avec;
.Python,
7371 octetsMerci à @xnor pour la récursion
Explication
x
est la valeur ascii de la lettre suivante de l'alphabets
est un accumulateur pour l'alphabett
est une ligne dans le triangle (ies
+s backwards
)t
si l'alphabet est terminé (c'est-à-dire que nous sommes au centre)t+f(...)+t
avec:x
incrémentés
annexé à la lettre suivantet
réinitialiser às
+s backwards
+\n
Mise à jour
\n
(+1) et les raccourcis conditionnels (-3), grâce à @xnorla source
t
passant à la boucle suivante. Il y a une nouvelle ligne menant supplémentaire cependant;x=66,s='A''
s'en débarrasse. Le cas de base peut être raccourci àx/92*t or
.HTML + CSS, 884 caractères
(763 caractères HTML + 121 caractères CSS)
Juste expansion Leaky Nun 's commentaire sur MonkeyZeus ' s réponse . (Bien que je puisse mal interpréter le commentaire…)
la source
Brachylog ,
3729 octetsCrédits à Fataliser pour son aide tout au long.
4 octets grâce à Fatalize et inspiration pour 4 autres octets.
Essayez-le en ligne!
Prédicat 0 (prédicat principal)
Prédicat 1 (prédicat auxiliaire)
Cela construit essentiellement un palindrome à partir de la chaîne donnée.
la source
,A
dans le prédicat 1 avech
, en enregistrant un octet.:1:2yt.
par:2&.
un!
(points de choix coupés) et en ajoutant un à la fin du prédicat 2.[char:char]y
pour générer les sustringsabcd…
au lieu de~c[A:B]
R,
127125 octetsPas complètement satisfait de cette solution, en particulier des deux
for
boucles, mais ne pourrait pas venir avec quelque chose de mieux!LETTERS
contient les lettres majuscules.Ungolfed:
ifelse
est un moyen plus simple de décompresserif... else...
et fonctionne de la manière suivante:ifelse(condition,action if TRUE, action if FALSE)
Une autre solution de 125 octets:
la source
Java 131 octets
Sans utiliser String (131 octets)
Codé
Avec chaîne (173 octets)
Codé
Merci à manatwork et à Kevin Cruijssen
la source
d!=-1
pard>-1
, idem pour k. (BTW, vous avez oublié de corriger la versioni+=k==1?1:-1
pouvez jouer au golf deux choses: êtrei+=k
etSystem.out.print((char)c+(c+d<65?"\n":"")),c+=d==1?1:-1);
êtreSystem.out.print((char)c+((c+=d)<65?"\n":"")));
. Donc, au total, cela devient ( 131 octets ):for(int i=0,k=1;i>-1;k=k>-1&i<25?1:-1,i+=k)for(int c=65,d=1;c>64;d=d>-1&c<65+i?1:-1,System.out.print((char)c+((c+=d)<65?"\n":"")));
brainfuck, 79 octets
Formaté:
Essayez-le en ligne
la source
Sesos , 27 octets
Essayez-le en ligne! Cochez Debug pour voir le code SBIN généré.
Assemblage Sesos
Le fichier binaire ci-dessus a été généré en assemblant le code SASM suivant.
la source
/// , 208 octets
Pas gagnant, bien sûr, mais le voilà, précédant Martin Ender ...
la source