Introdução:
Quando pensamos em joaninhas, geralmente pensamos em um bug vermelho ou laranja escuro com manchas pretas. Embora isso não seja necessário, como também existem pretos com joaninhas manchadas de vermelho / laranja ou joaninhas sem manchas , imaginamos principalmente joaninhas algo como esta joaninha asiática:
Outra coisa a notar é que as manchas nas joaninhas são quase sempre simétricas. E é aí que entra esse desafio.
Desafio:
Dado um número inteiro n
( >= 0
), produza a joaninha ASCII a seguir uma ou várias vezes, com pontos simétricos divididos igualmente entre os dois lados, bem como as duas ou mais joaninhas.
Aqui está o layout padrão da joaninha:
_V_
/(@I@)\
/ | \
| | |
\ | /
''-!-''
Se n=0
, produzimos a joaninha acima como está.
Quando n
é maior que zero, preenchemos os espaços do bug da arte ASCII com uma minúscula o
ou substituímos o |
no centro por uma capital O
. O objetivo é fazer n
alterações nas joaninhas 'vazias', enquanto ainda produz uma saída simétrica (por joaninha) e produzir o mínimo possível de joaninhas.
As saídas tão válidas para n=1
são:
_V_
/(@I@)\
/ O \
| | |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| O |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| | |
\ O /
''-!-''
Mas isso seria inválido:
_V_
/(@I@)\
/ | \
| o | |
\ | /
''-!-''
As saídas válidas para n=2
são:
_V_
/(@I@)\
/ O \
| O |
\ | /
''-!-''
_V_
/(@I@)\
/ O \
| | |
\ O /
''-!-''
_V_
/(@I@)\
/ o|o \
| | |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| o | o |
\ | /
''-!-''
etc. There are a lot of possible outputs.
O primeiro n
que não é mais possível encaixar em uma única joaninha é n=24
. Nesse caso, você terá que dividi-lo o mais uniformemente possível em duas joaninhas (você pode optar por produzi-las uma perto da outra ou uma debaixo da outra - com opcionalmente um espaço ou uma nova linha entre elas). Por exemplo:
_V_ _V_
/(@I@)\ /(@I@)\
/o o|o o\ /o o|o o\
|o o | o o||o o | o o|
\o o|o o/ \o o|o o/
''-!-'' ''-!-''
OU:
_V_
/(@I@)\
/ooo|ooo\
| | |
\ooo|ooo/
''-!-''
_V_
/(@I@)\
/ooo|ooo\
| | |
\ooo|ooo/
''-!-''
Regras do desafio:
n
estará na faixa de0-1000
.- Você pode optar por enviar para STDOUT, retornar como String ou matriz / lista de caracteres 2D, etc. Sua chamada.
- Não são permitidas novas linhas de frente ou espaços em branco desnecessários. Espaços em branco à direita e uma única linha nova à direita são permitidos.
- Como mencionado acima, quando duas ou mais joaninhas são necessárias, você pode optar por produzi-las uma perto da outra ou uma abaixo da outra (ou uma mistura de ambas ..)
- Quando duas ou mais joaninhas são impressas uma ao lado da outra, é permitido um único espaço opcional no meio. Quando duas ou mais joaninhas são impressas uma na outra, é permitida uma única nova linha opcional intermediária.
- Você pode escolher o layout das joaninhas em qualquer etapa da sequência, desde que simétricas e iguais à entrada
n
. - Como o objetivo é ter
n
alterações E o menor número possível de joaninhas, você começará a usar mais de uma joaninha quando estiver aciman=23
. O layout dessas joaninhas não precisa ser o mesmo. De fato, isso nem é possível para algumas entradas, comon=25
oun=50
para citar duas. - Além disso, às vezes não é possível dividir os pontos uniformemente entre duas ou mais joaninhas. Nesse caso, você terá que dividi-los o mais uniformemente possível, com no máximo uma diferença de 1 entre eles.
Portanto n=50
, mantendo as duas últimas regras em mente, essa seria uma saída possível válida (onde o primeiro bug tem 16 pontos e os outros dois têm 17):
_V_ _V_ _V_
/(@I@)\ /(@I@)\ /(@I@)\
/oooOooo\ / O \ /o oOo o\
|ooooOoooo||ooooOoooo||o ooOoo o|
\ | / \oooOooo/ \o oOo o/
''-!-'' ''-!-'' ''-!-''
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, adicione uma explicação, se necessário.
o
e O
em vez disso. Eu mudei um pouco a redação.
n=50
exemplo, eu acredito que você quer dizer o primeiro bug tem 16 pontos e os outros dois cada um tem 17.