En una pregunta de stackoverflow ahora eliminada, alguien publicó lo siguiente:
Escriba un programa o función para imprimir patrones alternos *
y #
basados en un número entero dado n
. Algunos ejemplos:
Entrada: n=1
Salida:
*
Entrada n=5
Salida:
*####
###**
***##
###**
*####
Entrada: n=8
Salida:
*#######
######**
***#####
####****
****####
#####***
**######
#######*
Como parecía un desafío de golf de código bastante bueno, aquí está.
¿Cómo se construyen estos patrones?
La primera línea comienza con un solo *
, seguido de la n-1
cantidad de seguimiento #
.
La segunda línea contiene dos *
, con una n-2
cantidad de plomo #
.
La tercera línea comienza con tres *
, seguida de la n-3
cantidad de seguimiento #
.
etc.
Una vez que hemos alcanzado el medio ( n/2
), contamos nuevamente con la cantidad de *
, que se puede ver en los ejemplos anteriores.
TENGA EN CUENTA que para números de entrada impares, el par de líneas invertidas (primero y último; segundo y próximo al último; etc.) son exactamente iguales. En el n=5
ejemplo, la primera y la última línea son *####
; la segunda y la penúltima línea son ###**
.
Sin embargo, para números de entrada pares, el par de líneas invertidas se invierte. En el n=8
ejemplo, la primera y la última línea son *#######
y #######*
; la segunda y próxima a las últimas líneas son ######**
y **######
; etc.
Reglas de desafío:
- Puede usar dos caracteres imprimibles distintos en lugar de
*
y#
. Puedes usarA
yB
;3
y7
;<
y>
; etc. Indique en sus respuestas lo que ha utilizado. - Puede suponer
n
que será un entero positivo (>= 1
) - Se le permite generar una lista / matriz de cadenas para cada línea o una matriz 2D de caracteres, en lugar de imprimirlos en STDOUT.
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Se aplican reglas estándar para su respuesta, por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código.
- Además, se recomienda agregar una explicación para su respuesta.
Casos de prueba (primero a n=1
través n=10
)
*
*#
#*
*##
#**
*##
*###
##**
**##
###*
*####
###**
***##
###**
*####
*#####
####**
***###
###***
**####
#####*
*######
#####**
***####
###****
***####
#####**
*######
*#######
######**
***#####
####****
****####
#####***
**######
#######*
*########
#######**
***######
#####****
*****####
#####****
***######
#######**
*########
*#########
########**
***#######
######****
*****#####
#####*****
****######
#######***
**########
#########*