Debe imprimir este texto exacto:
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
Especificaciones
- Se permiten nuevas líneas adicionales al final de la salida.
- Se permiten espacios finales adicionales (U + 0020) al final de cada línea, incluidas las nuevas líneas finales adicionales.
- Puede usar todas las minúsculas en lugar de todas las mayúsculas, pero no puede imprimir parcialmente minúsculas y parcialmente mayúsculas.
- Puede devolver el texto como una salida de función en lugar de imprimirlo en un programa completo.
Puntuación
Dado que este es un triángulo, y un triángulo tiene 3 lados, y 3 es un número pequeño, su código debe ser pequeño en términos de conteo de bytes.
code-golf
kolmogorov-complexity
alphabet
Monja permeable
fuente
fuente

Respuestas:
Vim, 37 bytes
Leyenda
fuente
:h<_↵↵↵YZZP), luego grabo una macro (qq…q) que corta repetidamente una letra de la línea superior, hace dos copias para hacer crecer el triángulo verticalmente, luego agrega la letra cortada a todas las líneas para cultivarlo horizontalmente. Repito esta macro 24 veces más para dibujar el triángulo completo.Logotipo,
232 207 196190 bytes¿Alguien dijo triángulos?
Saca tu brújula y transportador, y hagámoslo de forma gráfica. La geometría usa un triángulo equilátero para alinear los resultados. Anteriormente tenía un triángulo isósceles, pero involucraba demasiados decimales. Este cambio también compactó la salida, reduciendo la cantidad de preparación de pantalla y el cambio de fuente que tuve que hacer.
He utilizado el intérprete de línea Calormen para dar cuerpo éste hacia fuera. Si no tiene suficiente espacio en la pantalla, se ajustará, pero también puede manipular algunos números para encargarse de eso. Utilicé el modo de pantalla completa "F11" en mi navegador.
El
rprocedimiento dibuja una línea dencaracteres. El carácter se determina automáticamente dependiendo de cuántos segmentos se le indique que use. Elbparámetro le indica cuánto girar temporalmente para que las letras apunten en la dirección correcta. Ellparámetro determina la distancia lineal entre letras.El
tprocedimiento avanza a la siguiente posición y llama a larfunción cuatro veces para crear un triángulo, rotando cuando sea apropiado. Lo llamé dos veces para el lado vertical porque eso tomó menos bytes que llamarlo una vez con un manejo especial. El final del procedimiento posiciona a la tortuga para el inicio del siguiente triángulo, un paso más arriba.Zes un caso especial, por lo que simplemente lo imprimimos directamente y lo rotamos como si acabara de terminar un triángulo. Finalmente,tse llama 25 veces.fuente
Haskell, 58 bytes
Define una función
tque devuelve la salida como una cadena.fuente
Jalea ,
1613 bytes¡Gracias a @LeakyNun por jugar 3 bytes!
Pruébalo en línea!
Cómo funciona
fuente
Python, 74 bytes
Una función de Python 2 que imprime y no toma argumentos. La idea clave es generar el patrón triangular de ida y vuelta con recursión. Primero considere esta función más simple que imprime las letras 'A' hasta 'Z' y baja de nuevo a 'A':
La función primero imprime "A" (código de caracteres 65), luego vuelve a imprimir "B" (66) y así sucesivamente en "Z" (90). A partir de ahí, deja de recurrir. En el camino de regreso a la pila recursiva, imprime cualquier carácter
tque imprima en la misma capa, desde "Y" hasta "A".El código principal hace lo mismo, excepto que se acumula en
sla cadena de letras hasta el momento e imprime la cadena hacia arriba y hacia abajos+s[-2::-1].Gracias a xsot por 2 bytes.
En Python 3, lo mismo es un byte más corto (73 bytes) al poner todo en una línea.
fuente
f(x=66,s='A'). Esto le permite actualizarsen la llamada a la función en lugar del cuerpo de la función.brainfuck,
1733121119 bytesVersión ligeramente más legible:
Explicación posiblemente por venir.
fuente
05AB1E ,
20 13 126 bytesGuardado 2 bytes gracias a Adnan.
Guardado 6 bytes gracias a Magic Octopus Urn y algunas nuevas funciones de lenguaje.
Pruébalo en línea!
Explicación
fuente
Œ26£a.p, que es el comando prefijo. Además, puede cambiarD,a=, que imprime sin aparecer.gF,!Âes muy agradable y una característica realmente ordenada.ûes más nuevo que el desafío y haría que esta respuesta no sea competitiva.J,
262322 bytesExplicación
fuente
f=:,1}.|.intente estoPython 3, 97 bytes
Ideone it!
fuente
'\n'.join(a+a[-2::-1])Ruby, 71 bytes
Pruébalo en repl.it
fuente
> <> , 60 bytes
Pruébalo en línea!
fuente
C,
272247234230144137 bytes:(¡ Ahorré muchos bytes (
272 -> 230) en mi método anterior gracias a excelentes consejos y trucos de golf de sigalor ! )(Se guardaron casi 100 bytes (
230 -> 144) al cambiar a un método mejor ) .Mi primera respuesta en entrar
C. Acabo de comenzar a aprenderlo recientemente, así que veamos cómo funciona.C en acción! (Ideona)
fuente
main()el tipo de retorno e incluso el#include <stdio.h>. GCC (y también sitios como Ideone) están de acuerdo con eso. A continuación, puede 'externalizar' las definiciones de variables a la lista de parámetros de una función. Deja que sefor(int i=65;...conviertafor(i=65...y cambiamain()amain(i). Haga lo mismo para todas las demás variables int también (GCC predetermina los tipos faltantes aint).main()amain(i)?ivariable en la inicialización del bucle for, debe declararla en otro lugar. Y debido a que (al menos en C) los parámetros de una función pueden usarse como variables normales, no debería haber ningún problema. Por cierto, ¿qué compilador estás usando?Cen Ideone. Recibo varios<variable> undeclarederrores.JavaScript (ES6), 81 bytes
fuente
Mathematica 59 bytes
fuente
//Columndel final y prefijar su código conColumn@trabajos.〚y〛como bytes individuales. Dudo que haya una página de códigos de un solo byte que los tenga y que también sea compatible con Mathematica de inmediato. Tendrían por tres bytes en UTF-8, por lo que realmente no guardan nada sobre plano[[...]]. Tampoco estoy seguro de cuán legítimoColumnes, ya que solo se muestra como una lista de líneas en un cuaderno de Mathematica. Ejecutar este código desde un archivo de script no mostraría nada. Sin embargo,Print/@es el mismo número de bytes y funciona en cualquier caso.[what you see](actual link). Ex.[Example Link](https://www.example.com), que se muestra como Enlace de ejemploDyalog APL, 18 bytes
fuente
R,
63 6159 bytesCon ayuda
LETTTERS[0]no devuelve ningún personaje.Editar: perdido uno gracias a @leakynun
Editar: dos más gracias a @plannapus
fuente
\nTSQL, 159 bytes
Violín
fuente
Javascript (usando una biblioteca externa enumerable), 135 bytes
Enlace a la biblioteca: https://github.com/mvegh1/Enumerable
Explicación del código: cree un rango de entradas que comience en 1, para un conteo de 51. Para cada una, escriba una línea de acuerdo con la pred. Compleja. Realice algunas tareas de JS con variables globales y almacenamiento en caché ... y listo. Para cada int en WriteLine, estamos creando el rango de entradas a la izquierda y almacenando en "g" global, y String Joining (Write) con
""delimitador y asignando cada int a la asignación de String al código int char. Luego, concatenamos el lado derecho tomando la inversión de esa secuencia (y omitiendo el primer elemento porque coincidirá con el último elemento del orden original ...), escribiendo con la misma lógica. EDITAR: se actualizaron las partes internas de Write en la biblioteca. Una secuencia vacía escribirá una cadena vacía en lugar de nula ahora. Esto también redujo 15 bytes de la respuestafuente
import sympyofrom sympy import*en la parte superior. Las respuestas Bash + x son diferentes porque solo tienes que instalar x , no habilitarlo de alguna manera.sympy,numpy,scipy, etc. todo el tiempo.Powershell,
6152 bytes¡Gracias a TimmyD por guardar 9 bytes!
Recorre los valores ASCII para letras mayúsculas hacia adelante y luego hacia atrás. Para cada número, esto crea una matriz de los primeros números X, elimina el número X-1st, luego agrega el reverso de los primeros números X, que luego se convierten en caracteres y se unen en una cadena.
fuente
65..90..65por capricho antes sin éxito. Supongo que olvidé que podría agregar los rangos juntos.Cheddar ,
10296796967 bytes17 bytes gracias a Downgoat, e inspiración para 10 más.
El hecho de que las cadenas pueden concatenar pero no matrices significa que tendría que convertir los dos rangos en cadenas, concatenar y luego volver a convertirlas en matrices.
Además, el hecho de que
vfuseproduzca un newliens principal significa que necesitaría generar la primera línea manualmente y luego concat al resto.@"como una diada (función de dos argumentos) puede convertirse en cadena directamente, pero no funciona para el rango inverso (si el primer argumento es mayor que el segundo).El rango era medio inclusivo. Después de la corrección de errores se hizo inclusivo.
Uso
Cheddar, 55 bytes (no competidor)
En la última versión con todas las correcciones, la respuesta es:
pero fue hecho después del desafío.
fuente
@"(1|>26)puede ser1@"26String.letterspuede ser(65@"91)String.letters.slice(0,i)tal vez podría ser65@"(66+i)C, 93 bytes
Llamar
f()sin argumentos.Pruébalo con ideone .
fuente
VBA, 94 bytes
Llamar en la ventana Inmediato con? T
Solo para explicar lo que está sucediendo: uso la función Abs dos veces, para reflejar tanto el recorrido del alfabeto como la longitud de la línea. Se adapta bien a la tarea debido al valor extremo único en ambos casos, que corresponde al cruce por cero de la variable pre-Abs.
Como un conjunto simple de comandos en la ventana Inmediato de VBA, en lugar de un programa o función, lo siguiente necesitaría 72 bytes:
(con agradecimiento a @GuitarPicker)
fuente
Function T:, termine con:?T(aunque solo funcionaría una vez, porque después de eso necesitaría restablecer T a "", pero ¿quién necesita más de uno de estos triángulos?)?en el camino;.Python,
7371 bytesGracias a @xnor por la recursividad
Explicación
xes el valor ascii de la siguiente letra del alfabetoses un acumulador para el alfabetotes una línea en el triángulo (es decir,s+s backwards)tsi el alfabeto está listo (es decir, estamos en el centro)t+f(...)+tcon:xincrementadosadjunto con la siguiente cartatrestablecer as+s backwards+\nActualizar
\n(+1) y el condicional acortado (-3) todo gracias a @xnorfuente
tpasar al siguiente ciclo. Sin embargo, hay una nueva línea principal adicional;x=66,s='A''se deshace de eso. El caso base se puede acortar ax/92*t or.HTML + CSS, 884 caracteres
(763 caracteres HTML + 121 caracteres CSS)
Simplemente expandiendo el comentario de Leaky Nun sobre la respuesta de MonkeyZeus . (Aunque podría leer mal el comentario ...)
fuente
Brachylog ,
3729 bytesCréditos para Fatalizar por su ayuda en todo momento.
4 bytes gracias a Fatalize, e inspiración para otros 4 bytes.
Pruébalo en línea!
Predicado 0 (predicado principal)
Predicado 1 (predicado auxiliar)
Esto básicamente construye un palíndromo a partir de la cadena dada.
fuente
,Aen Predicate 1 conh, guardando un byte.:1:2yt.con:2&.y añadiendo un!(puntos de elección corte) al final del predicado 2.[char:char]ypara generar las cadenas enabcd…lugar de~c[A:B]R,
127125bytesNo estoy completamente satisfecho con esta solución, especialmente los dos
forbucles, ¡pero no podría venir con algo mejor!LETTERScontiene las letras mayúsculas.Sin golf:
ifelsees una forma más corta de deshacerif... else...y funciona de esta manera:ifelse(condition,action if TRUE, action if FALSE)Otra solución de 125 bytes:
fuente
Java 131 bytes
Sin usar String (131 bytes)
Codegolfed
Con cadena (173 bytes)
Codegolfed
Gracias a manatwork y Kevin Cruijssen
fuente
d!=-1cond>-1, lo mismo para k. (Por cierto, olvidaste arreglar la versión de golf.)i+=k==1?1:-1puede seri+=kySystem.out.print((char)c+(c+d<65?"\n":"")),c+=d==1?1:-1);puede serSystem.out.print((char)c+((c+=d)<65?"\n":"")));. Entonces, en total se convierte en ( 131 bytes ):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 bytes
Formateado:
Pruébalo en línea
fuente
Sesos , 27 bytes
Pruébalo en línea! Verifique la depuración para ver el código SBIN generado.
Asamblea Sesos
El archivo binario anterior se ha generado al ensamblar el siguiente código SASM.
fuente
/// , 208 bytes
No ganar, por supuesto, pero aquí está, anterior a Martin Ender ...
fuente