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-1cantidad de seguimiento #.
La segunda línea contiene dos *, con una n-2cantidad de plomo #.
La tercera línea comienza con tres *, seguida de la n-3cantidad 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=5ejemplo, 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=8ejemplo, 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 usarAyB;3y7;<y>; etc. Indique en sus respuestas lo que ha utilizado. - Puede suponer
nque 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=1través n=10)
*
*#
#*
*##
#**
*##
*###
##**
**##
###*
*####
###**
***##
###**
*####
*#####
####**
***###
###***
**####
#####*
*######
#####**
***####
###****
***####
#####**
*######
*#######
######**
***#####
####****
****####
#####***
**######
#######*
*########
#######**
***######
#####****
*****####
#####****
***######
#######**
*########
*#########
########**
***#######
######****
*****#####
#####*****
****######
#######***
**########
#########*