¡Hoy vamos a construir una pirámide con letras! Aquí hay una pirámide de letras de ejemplo para las primeras 5 letras:
Escriba las primeras 5 letras con un espacio entre ellas, primero ascendente y luego descendente.
A B C D E D C B A
Haga lo mismo para las primeras cuatro letras en la línea de arriba, pero con dos espacios iniciales adicionales:
A B C D C B A A B C D E D C B A
Repita el mismo paso hasta que la última línea sea solo '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
Repita los pasos dos y tres bajando en lugar de subir:
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
Este mismo patrón puede extenderse hasta 26 caracteres. Su desafío es escribir un programa o función que tome un entero como entrada y produzca la pirámide de letras correspondiente. Puede elegir usar caracteres en mayúscula o minúscula. Siempre puede suponer que la entrada será un número entero [1, 26]
y la salida puede tener cualquier formato razonable para una cadena 2d. Por ejemplo, una cadena con nuevas líneas, una matriz de caracteres, imprimir en un archivo, etc. Cada línea puede tener espacios finales y, opcionalmente, puede generar una nueva línea final.
Aquí hay algunos ejemplos de entradas / salidas:
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
Como siempre, este es el código de golf, por lo que se aplican las lagunas estándar y gana la respuesta más corta en bytes.
Respuestas:
Python,
184 174169 bytesEditar: guardado 5 bytes gracias a @ nedla2004
fuente
g
en tres líneas. 2.) Asignarrange
a una variable. Puedes ver ambos aquí . (Nota: antes de quedef f(x,y,z):
haya un espacio, antes delfor
bucle hay una pestaña.range
s que puedas reemplazar?R((a-i))
enR(a-i)
yR((a-i-1))
dentroR(a-i-1)
, ¿no?for
bucles dentro de la comprensión de la lista.print
.05AB1E , 13 bytes
Código:
Explicación:
Utiliza la codificación CP-1252 . Pruébalo en línea!
fuente
MATL ,
2524 bytesPruébalo en línea!
Alternativas más largas:
1Y20hiZv&+G-t0>*1&!t0*hTe)
(26 bytes)Zv&+64+G-t64>*l2&Y"tZyP:o*c
(27 bytes)Explicación
fuente
V , 45 bytes
Pruébalo en línea!
Esto terminó siendo mucho menos golfoso de lo que esperaba, por lo que aún no voy a publicar una explicación. Espero poder reducirlo un poco más primero. Como de costumbre, aquí hay un hexdump:
fuente
J, 34 bytes
Toma el número como entrada y devuelve una matriz de caracteres 2D.
Explicación
Caso de prueba descompuesto
Probemos esto con la entrada
5
.Casos de prueba
fuente
Jalea , 13 bytes
TryItOnline!
¿Cómo?
fuente
Pyke, 12 bytes
Pruébalo aquí!
Deshabilitar advertencias para salida especificada
fuente
C #,
266263262261245238235232 bytesGolfizado:
Ungolfed con comentarios:
Pruébelo: http://rextester.com/WIL67940
Devuelve la lista de cadenas. Cada cadena contiene una línea de salida.
Lo hice por diversión y entrenamiento. Me doy cuenta de que ganar cualquiera de los códigos de golf con C # está fuera de rango.
EDITAR1: Se cambió la interpolación de cadenas a
+
operador.EDIT2:
c <= 'A' + i
=>c < 'B' + i
EDITAR3: intercambiado
char
convar
.EDITAR4: Se cambió el tipo de retorno de
void
aList
.EDIT5: Eliminación de variables innecesarias.
EDIT6: Nueva forma de separar mitades de línea.
EDIT7: @Kaspar Kjeldsen, gracias.
fuente
C,
124123 bytesAhorrando 1 byte gracias a Mukul Kumar
Actualmente no puedo conseguir que mi cabeza transforme el doble circuito en uno solo, lo dejaré así por el momento.En realidad, esto es más grandeAsí que acabo de dejar el bucle anidado.
Utiliza la norma de Manhattan para obtener la forma del diamante.
Sin golf:
fuente
j==2*n
conj-2*n
e intercambiar los? ()
valores con:()
valorPython,
158154140139 bytesEsta es mi primera publicación, ¡así que sé amable! Hice un uso intensivo de [:: - 1] para revertir las cadenas, por lo que quizás haya algo de optimización allí. Comentarios bienvenidos
EDICIONES:
Gracias @Rod por el puntero al útil enlace al tema del golf de código Python y también por recordarme que las letras necesitan espacios entre ellas. También gracias @wec por los consejos generales sobre la eliminación de espacios.
fuente
=
), después de las comas y antes del paréntesis de apertura en la declaración de impresión. La sangría de Python puede ser de cualquier nivel siempre que sea coherente, por lo que puede guardar 3 caracteres al independizar su declaración de impresión solo un espacio en lugar de cuatro. Esos son los ahorros fáciles que puedo ver.z
solo una vez, no necesita usar una variable, simplemente coloques*2-1
directamente en lacenter
función. Solo un detalle, la salida debe tener espacios entre las letras,' '.join
justo después de la impresión debería ser suficiente (pero debe volver a trabajars*2-1
para obtener el valor correcto).range
y para[:]
es0
, por lo que no es necesario que lo explique explícitamenteBrain-Flak, 630 + 3 = 633 bytes
Esto requiere que la
-A
bandera se ejecutePruébalo en línea
Este no es un gran golf, pero este desafío es bastante difícil en Brain-Flak
fuente
Pyth, 23 bytes
Pruébalo en línea
fuente
TSQL, 261 bytes
Consulta de una línea: sin bucles
Desafortunadamente, el violín se come los espacios al comienzo de las líneas de salida. Los espacios estarán allí si se ejecutan en el estudio de administración de SQL Server
Violín
fuente
Rubí,
13711510084 bytesGracias a manatwork por los comentarios.
fuente
0..n-1
→0...n
.n>0?…:""
.Befunge 93 , 175 bytes
Pruébalo en línea!
Probablemente no muy bien golfizado. Oh bien. Esto fue bastante difícil con befunge:
¡Buena suerte descubriendo cómo funciona! Apenas lo se.
fuente
C #, 199 bytes
Como siempre, C # no es un gran lenguaje de golf, pero prefiero el código "legible" mucho más que el código esotérico. También hice esto por diversión :)
Aquí hay una versión sin golf, para que puedas entender fácilmente lo que hice:
(Creo que esto podría optimizarse mucho sin embargo ...)
fuente
Java, 213 bytes
Sin golf:
fuente
Java, 394 bytes
Normalmente hago C #, pero es bueno mezclarlo ...
Golfizado:
Sin golf:
Prueba:
fuente
R,
1009787 bytes(Actualización:
scan()
para entrada; abusado (x-1): 1 == x: 2-1.)No está nada mal para uno de los lenguajes de palabras clave por su aspecto (esos de caracteres especiales siempre serán mejores).
fuente
PHP,
122116 bytes¿Hay un camino más corto?
fuente
JavaScript (ES6), 121 bytes
Donde
\n
representa el carácter literal de nueva línea. Salidas en minúsculas.fuente
Lote, 269 bytes.
La línea 2 termina en 25 espacios; Esto significa que cuando el índice del alfabeto se vuelve negativo, esos cuadrados simplemente permanecen en blanco.
fuente