Em uma pergunta de stackoverflow agora excluída, alguém postou o seguinte:
Escreva um programa ou função para imprimir padrões alternados *
e com #
base em um número inteiro n
. Alguns exemplos:
Entrada: n=1
Saída:
*
Entrada n=5
Saída de :
*####
###**
***##
###**
*####
Entrada: n=8
Saída:
*#######
######**
***#####
####****
****####
#####***
**######
#######*
Uma vez que parecia um desafio muito legal de código de golfe, aqui está.
Como esses padrões são construídos?
A primeira linha começa com uma única *
, seguida pela n-1
quantidade de final #
.
A segunda linha contém duas *
, com n-2
quantidade de liderança #
.
A terceira linha começa com três *
, seguidas pela n-3
quantidade de#
.
etc.
Quando chegamos ao meio (n/2
), contamos novamente com a quantidade de *
, que pode ser vista nos exemplos acima.
Observe que, para números de entrada ímpares, o par de linhas inversas (portanto, a primeira e a última; a segunda e a penúltima; etc.) são exatamente iguais. No n=5
exemplo, a primeira e a última linha são *####
; a segunda e a penúltima linha são ###**
.
Para números de entrada pares, no entanto, o par de linhas inversas é invertido. No n=8
exemplo, a primeira e a última linha são *#######
e #######*
; a segunda e a penúltima linha são######**
e **######
; etc.
Regras do desafio:
- Você pode usar dois caracteres distintos para impressão em vez de
*
e#
. Você pode usarA
eB
;3
e7
;<
e>
; etc. Por favor, indique em suas respostas o que você usou. - Você pode assumir
n
que será um número inteiro positivo (>= 1
) - Você tem permissão para produzir uma lista / matriz de cadeias para cada linha ou uma matriz 2D de caracteres, em vez de imprimi-las em STDOUT.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código.
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
Casos de teste (primeiro n=1
a n=10
)
*
*#
#*
*##
#**
*##
*###
##**
**##
###*
*####
###**
***##
###**
*####
*#####
####**
***###
###***
**####
#####*
*######
#####**
***####
###****
***####
#####**
*######
*#######
######**
***#####
####****
****####
#####***
**######
#######*
*########
#######**
***######
#####****
*****####
#####****
***######
#######**
*########
*#########
########**
***#######
######****
*****#####
#####*****
****######
#######***
**########
#########*