Introdução:
(Fonte: Wikipedia )
Quando olhamos para um arco-íris, ele sempre terá as cores de cima para baixo:
vermelho; laranja; amarelo; verde; azul; índigo; tolet
Se olharmos para esses anéis individuais, é claro que o anel vermelho é maior que o anel violeta.
Além disso, também é possível ter dois ou até três arco-íris ao mesmo tempo.
Tudo isso combinado acima será usado neste desafio:
Desafio:
Dado um número inteiro n
, produza muitos anéis dos (possivelmente mais de um) 'arco-íris', onde usaremos as letras vibgyor
para as cores.
Veja os casos de teste abaixo para ver como eles são criados a partir de cima n=1
e como o espaçamento deve ser tratado (em n=8
). Como você pode ver, um espaço é adicionado entre dois arco-íris, incluindo o espaçamento na parte superior, antes de adicionarmos o anel do próximo arco-íris na linha.
Regras do desafio:
- Você tem permissão para usar capital em
VIBGYOR
vez de letras minúsculas - Deve haver um espaço entre os arco-íris individuais
- Qualquer quantidade de espaços à esquerda e / ou à direita / novas linhas é permitida, desde que o arco-íris real (onde quer que seja colocado na tela) esteja correto
- A entrada sempre será um número inteiro positivo (
>= 1
). O comportamento quandon=0
é, portanto, indefinido, e o programa / função pode fazer o que quiser (não produzindo nada; produzindo o arco-íris den=1
; produção aleatória; falha com erro; etc.) - Você pode gerar uma lista / matriz de seqüências de caracteres ou uma matriz / lista 2D de caracteres, se desejar (você pode adicionar o código de impressão bonita no rodapé do TIO).
- Ignore o fato de que as saídas parecem mais templos maias do que arco-íris. XD
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
e n=25
):
1:
vvv
v v
2:
iii
ivvvi
iv vi
3:
bbb
biiib
bivvvib
biv vib
4:
ggg
gbbbg
gbiiibg
gbivvvibg
gbiv vibg
5:
yyy
ygggy
ygbbbgy
ygbiiibgy
ygbivvvibgy
ygbiv vibgy
6:
ooo
oyyyo
oygggyo
oygbbbgyo
oygbiiibgyo
oygbivvvibgyo
oygbiv vibgyo
7:
rrr
rooor
royyyor
roygggyor
roygbbbgyor
roygbiiibgyor
roygbivvvibgyor
roygbiv vibgyor
8:
vvv
v v
v rrr v
v rooor v
v royyyor v
v roygggyor v
v roygbbbgyor v
v roygbiiibgyor v
v roygbivvvibgyor v
v roygbiv vibgyor v
9:
iii
ivvvi
iv vi
iv rrr vi
iv rooor vi
iv royyyor vi
iv roygggyor vi
iv roygbbbgyor vi
iv roygbiiibgyor vi
iv roygbivvvibgyor vi
iv roygbiv vibgyor vi
10:
bbb
biiib
bivvvib
biv vib
biv rrr vib
biv rooor vib
biv royyyor vib
biv roygggyor vib
biv roygbbbgyor vib
biv roygbiiibgyor vib
biv roygbivvvibgyor vib
biv roygbiv vibgyor vib
25:
ggg
gbbbg
gbiiibg
gbivvvibg
gbiv vibg
gbiv rrr vibg
gbiv rooor vibg
gbiv royyyor vibg
gbiv roygggyor vibg
gbiv roygbbbgyor vibg
gbiv roygbiiibgyor vibg
gbiv roygbivvvibgyor vibg
gbiv roygbiv vibgyor vibg
gbiv roygbiv rrr vibgyor vibg
gbiv roygbiv rooor vibgyor vibg
gbiv roygbiv royyyor vibgyor vibg
gbiv roygbiv roygggyor vibgyor vibg
gbiv roygbiv roygbbbgyor vibgyor vibg
gbiv roygbiv roygbiiibgyor vibgyor vibg
gbiv roygbiv roygbivvvibgyor vibgyor vibg
gbiv roygbiv roygbiv vibgyor vibgyor vibg
gbiv roygbiv roygbiv rrr vibgyor vibgyor vibg
gbiv roygbiv roygbiv rooor vibgyor vibgyor vibg
gbiv roygbiv roygbiv royyyor vibgyor vibgyor vibg
gbiv roygbiv roygbiv roygggyor vibgyor vibgyor vibg
gbiv roygbiv roygbiv roygbbbgyor vibgyor vibgyor vibg
gbiv roygbiv roygbiv roygbiiibgyor vibgyor vibgyor vibg
gbiv roygbiv roygbiv roygbivvvibgyor vibgyor vibgyor vibg
gbiv roygbiv roygbiv roygbiv vibgyor vibgyor vibgyor vibg
Respostas:
Python 2 ,
848281 bytes-2 bytes graças ao ElPedro.
Experimente online!
fonte
JavaScript (ES6), 100 bytes
Retorna uma matriz de strings.
Experimente online!
fonte
05AB1E ,
323123 bytesExperimente online!
-1 graças a Kevin Cruijssen e -8 graças a Adnan
Explicação (Exemplo de pilha com entrada 3):
fonte
"vibgyor"
pode ser jogado por 1 byte a.•2Bãθ(•
. ( Aqui, a explicação para isso na seção " Como compactar seqüências de caracteres que não fazem parte do dicionário? ".) Além disso, você„vr…v r:ð«
pode jogar golfe'v„v .:
. Então 28 bytes . Boa resposta, porém, +1 de mim..••
não salvaria um byte. Calcula que a única vez em que não checo é o tempo em que ele salvaria os bytes xD. Boa captura.•VvÈ©•¹∍¬„ v:Rηε¬ý}.c
¬ý
é um gênio ... Eita ... Você pensa de maneira diferente e é incrível.Tela ,
292826 bytesExperimente aqui!
Explicação:
252422 bytes após a fixação do campo de ciclo, se o comprimento desejado for maior que o comprimento das entradas e a fixação/
pela 10ª vezfonte
v
lados (<
)?v
Já é uma palavra-chave reservada no Canvas, se sim, por que não usar<
como palavra-chave invertida?<
rodado de 90 ° no sentido anti- horário é igual av
: P Todos ASCII são parte de cordas em lona aliásv
aqui e o girasse 90 graus no sentido anti-horário, ele se tornaria>
. Entendo. : DHaskell ,
114110101 bytesObrigado a [nimi] [1] por -
413 bytes!Experimente online!
fonte
Dyalog APL ,
413938 bytesExperimente online!
Uma abordagem semelhante a outras pessoas:
A←⌈⎕×8÷7
encontra a altura do arco-íris (também a largura da 'meia linha' mais longa à esquerda / direita do centro) e a atribuiA
para uso posterior, enquanto¨-⍳
itera os valores 1..A, negando-os a selecionar no lado correto quando usados com↑
.A⍴' vibgyor'
gera uma 'meia linha' e⍵↑
seleciona a substring de comprimento correto.(⌽,⊃,A↑⊢)
gera a linha completa no sentido inverso (o que leva menos caracteres para fazer), começando com uma meia linha invertida (⌽
), depois o caractere central retirado do início da cadeia de meia linha (⊃
) e, finalmente, uma versão acolchoada à direita da meia linha (A↑⊢
) O final⌽
reverte a linha para a orientação correta e↑
transforma o vetor de linhas em uma matriz 2D.Edit: -2 graças a dzaima
Edit: -1 graças a ngn
fonte
⍕⍪
com↑
- a saída de uma matriz 2D de personagens é permitido1+÷7
->8÷7
Python 2 , 108 bytes
Experimente online!
fonte
Carvão , 30 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Mude a direção do desenho para cima.
Calcule a altura do arco-íris e repita a string literal para esse comprimento.
Imprima a linha central do arco-íris.
Imprima a metade direita do arco-íris, obtendo fatias sucessivas e imprimindo cada uma em sua própria "linha".
Reflita para completar o arco-íris.
fonte
Gelatina , 31 bytes
Experimente online!
Confira uma suíte de testes!
ಠ_ಠ Este é excessivamente complicado, porque Jelly não tem uma função centralizar ...
fonte
Gelatina , 28 bytes
Um link monádico que aceita um número inteiro que gera uma lista de listas de caracteres.
Experimente online! (rodapé se junta a caracteres de nova linha)
Ou veja a suíte de testes .
Quão?
fonte
R , 130 bytes
Experimente online!
fonte
Haskell , 106
113bytesAinda não posso comentar outras postagens (ou seja, essa ), então tenho que postar a solução como uma resposta separada.
Jogou fora 7 bytes por ovs
Experimente online!
( Versão antiga , 113 bytes)
fonte
PowerShell ,
108988985 bytesExperimente online!
Este parece bem agora. O arredondamento dos banqueiros ainda é o diabo e eu descobri como fazer uma união não burra. Eu tentei monkeying com $ ofs sem muito sucesso. Falando nisso, os resultados sem junções parecem muito bons, um pouco melty:
fonte
Python 2 ,
132131 bytesExperimente online!
Salvou:
fonte
//
no Python 2?Vermelho , 153 bytes
Experimente online!
Um pouco mais legível:
fonte
Java (JDK 10) , 184 bytes
Experimente online!
Imprime um espaço extra inicial e final para cada múltiplo de 7.
Explicação
Créditos
fonte
,w=-~h*2+1,i=h+1
para,i=h+1,w=i*2+1
i-~i
vez dei*2+1
Stax , 23 bytes
Execute e depure
Descompactado, não jogado e comentado, parece com isso.
Execute este
fonte