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
r
procedimiento dibuja una línea den
caracteres. El carácter se determina automáticamente dependiendo de cuántos segmentos se le indique que use. Elb
parámetro le indica cuánto girar temporalmente para que las letras apunten en la dirección correcta. Ell
parámetro determina la distancia lineal entre letras.El
t
procedimiento avanza a la siguiente posición y llama a lar
funció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.Z
es un caso especial, por lo que simplemente lo imprimimos directamente y lo rotamos como si acabara de terminar un triángulo. Finalmente,t
se llama 25 veces.fuente
Haskell, 58 bytes
Define una función
t
que 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
t
que imprima en la misma capa, desde "Y" hasta "A".El código principal hace lo mismo, excepto que se acumula en
s
la 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 actualizars
en 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)
?i
variable 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?C
en Ideone. Recibo varios<variable> undeclared
errores.JavaScript (ES6), 81 bytes
fuente
Mathematica 59 bytes
fuente
//Column
del 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ítimoColumn
es, 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
\n
TSQL, 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 sympy
ofrom 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..65
por 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
vfuse
produzca 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@"26
String.letters
puede 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
x
es el valor ascii de la siguiente letra del alfabetos
es un acumulador para el alfabetot
es una línea en el triángulo (es decir,s
+s backwards
)t
si el alfabeto está listo (es decir, estamos en el centro)t+f(...)+t
con:x
incrementados
adjunto con la siguiente cartat
restablecer as
+s backwards
+\n
Actualizar
\n
(+1) y el condicional acortado (-3) todo gracias a @xnorfuente
t
pasar 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
,A
en 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]y
para generar las cadenas enabcd…
lugar de~c[A:B]
R,
127125bytesNo estoy completamente satisfecho con esta solución, especialmente los dos
for
bucles, ¡pero no podría venir con algo mejor!LETTERS
contiene las letras mayúsculas.Sin golf:
ifelse
es 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!=-1
cond>-1
, lo mismo para k. (Por cierto, olvidaste arreglar la versión de golf.)i+=k==1?1:-1
puede seri+=k
ySystem.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