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-1quantidade de final #.
A segunda linha contém duas *, com n-2quantidade de liderança #.
A terceira linha começa com três *, seguidas pela n-3quantidade 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=5exemplo, 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=8exemplo, 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 usarAeB;3e7;<e>; etc. Por favor, indique em suas respostas o que você usou. - Você pode assumir
nque 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=1a n=10)
*
*#
#*
*##
#**
*##
*###
##**
**##
###*
*####
###**
***##
###**
*####
*#####
####**
***###
###***
**####
#####*
*######
#####**
***####
###****
***####
#####**
*######
*#######
######**
***#####
####****
****####
#####***
**######
#######*
*########
#######**
***######
#####****
*****####
#####****
***######
#######**
*########
*#########
########**
***#######
######****
*****#####
#####*****
****######
#######***
**########
#########*