Introducción:
(Fuente: Wikipedia )
Cuando miramos un arco iris siempre tendrá los colores de arriba a abajo:
rojo; naranja; amarillo; verde; azul; índigo; Violeta
Si observamos estos anillos individuales, el anillo rojo es, por supuesto, más grande que el anillo violeta.
Además, también es posible tener dos o incluso tres arcoíris al mismo tiempo.
Todo lo anterior combinado se usará en este desafío:
Desafío:
Dado un número entero n
, genera muchos anillos de (posiblemente más de uno) 'arco iris', donde usaremos las letras vibgyor
para los colores.
Vea los casos de prueba a continuación para ver cómo se construyen hacia arriba n=1
y cómo se debe manejar el espacio (en n=8
). Como puede ver, se agrega un espacio entre dos arcoíris, incluido el espacio en la parte superior, antes de agregar el anillo del siguiente arcoíris en línea.
Reglas de desafío:
- Se le permite usar capital en
VIBGYOR
lugar de minúsculas - Debería haber un espacio entre los arcoíris individuales
- Se permite cualquier cantidad de espacios iniciales y / o finales / nuevas líneas, siempre que el arcoíris real (donde sea que se coloque en la pantalla) sea correcto
- La entrada siempre será un entero positivo (
>= 1
). El comportamiento,n=0
por lo tanto, no está definido, y el programa / función puede hacer lo que quiera (no generar nada; generar el arco iris den=1
; salida aleatoria; fallar con un error; etc.) - Si lo desea, puede generar una lista / matriz de cadenas o una matriz / lista de caracteres 2D (puede agregar el código de impresión bonita en el pie de página de TIO).
- Ignora el hecho de que las salidas se parecen más a los templos mayas que a los arcoiris. XD
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=1
través n=10
y 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
Respuestas:
Python 2 ,
848281 bytes-2 bytes gracias a ElPedro.
Pruébalo en línea!
fuente
JavaScript (ES6), 100 bytes
Devuelve una matriz de cadenas.
Pruébalo en línea!
fuente
05AB1E ,
323123 bytesPruébalo en línea!
-1 gracias a Kevin Cruijssen y -8 gracias a Adnan
Explicación (Ejemplo de pila con entrada de 3):
fuente
"vibgyor"
se puede jugar golf por 1 byte a.•2Bãθ(•
. ( Aquí la explicación en la sección " ¿Cómo comprimir cadenas que no forman parte del diccionario? "). Además,„vr…v r:ð«
se puede jugar a golf'v„v .:
. Entonces 28 bytes . Buena respuesta, sin embargo, +1 de mi parte..••
no guardaría un byte. Calcula que la única vez que no verifico es el tiempo que ahorraría bytes xD. Buena captura.•VvÈ©•¹∍¬„ v:Rηε¬ý}.c
¬ý
es genio ... Dios ... Piensas de manera diferente y es increíble.Lienzo ,
292826 bytesPruébalo aquí!
Explicación:
252422 bytes después de arreglar ese shouldold debería ciclar si la longitud deseada es mayor que la longitud de las entradas y arreglar/
por décima vezfuente
v
lado (<
)? ¿v
Ya es una palabra clave reservada en Canvas? Si es así, ¿por qué no utilizarla<
como esa palabra clave invertida?<
girado 90 ° en sentido antihorario es igualv
: P Todos los ASCII son parte de cadenas en Canvas por ciertov
aquí, y luego lo giras 90 grados en sentido antihorario, se convierte en su>
lugar. Veo. : DHaskell ,
114110101 bytesGracias a [nimi] [1] por -
413 bytes!Pruébalo en línea!
fuente
Dyalog APL ,
413938 bytesPruébalo en línea!
Un enfoque similar a los demás:
A←⌈⎕×8÷7
encuentra la altura del arco iris (también el ancho de la 'media fila' más larga a la izquierda / derecha del centro) y lo asignaA
para su uso posterior, mientras¨-⍳
itera a través de los valores 1..A, negándolos a seleccionar en el lado correcto cuando se usa con↑
.A⍴' vibgyor'
genera una 'media fila' y⍵↑
selecciona la subcadena de longitud correcta.(⌽,⊃,A↑⊢)
genera la fila completa en reversa (que requiere menos caracteres), comenzando con una media fila invertida (⌽
), luego el carácter central tomado del comienzo de la cadena de media fila (⊃
) y finalmente una versión con relleno derecho de la media fila (A↑⊢
) El final⌽
invierte la fila en la orientación correcta y↑
convierte el vector de filas en una matriz 2D.Editar: -2 gracias a dzaima
Editar: -1 gracias a ngn
fuente
⍕⍪
con↑
- se permite la salida de una matriz 2D de caracteres1+÷7
->8÷7
Python 2 , 108 bytes
Pruébalo en línea!
fuente
Carbón , 30 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Cambia la dirección del dibujo hacia arriba.
Calcule la altura del arcoíris y repita la cadena literal a esa longitud.
Imprime la línea central del arcoíris.
Imprima la mitad derecha del arco iris tomando rebanadas sucesivas e imprimiendo cada una en su propia "línea".
Reflexiona para completar el arcoiris.
fuente
Jalea , 31 bytes
Pruébalo en línea!
¡Mira un paquete de prueba!
ಠ_ಠ Esto es demasiado complicado porque Jelly no tiene una función centralizada ...
fuente
Jalea , 28 bytes
Un enlace monádico que acepta un número entero que produce una lista de listas de caracteres.
Pruébalo en línea! (el pie de página se une con los caracteres de nueva línea)
O vea el conjunto de pruebas .
¿Cómo?
fuente
R , 130 bytes
Pruébalo en línea!
fuente
Haskell ,
106113bytesTodavía no puedo comentar otras publicaciones (es decir, esto ), así que tengo que publicar la solución como una respuesta separada.
Golfed lejos 7 bytes por ovs
Pruébalo en línea!
( Versión anterior , 113 bytes)
fuente
PowerShell ,
108988985 bytesPruébalo en línea!
Este se siente bastante bien ahora. El redondeo de los banqueros sigue siendo el demonio y descubrí cómo hacer una unión no tonta. Traté de hacer monos con $ ofs sin mucho éxito. Hablando de eso, los resultados sin combinaciones se ven bastante bien, un poco melty:
fuente
Python 2 ,
132131 bytesPruébalo en línea!
Salvado:
fuente
//
en Python 2?Rojo , 153 bytes
Pruébalo en línea!
Ligeramente más legible:
fuente
Java (JDK 10) , 184 bytes
Pruébalo en línea!
Imprime un espacio inicial y final adicional para cada múltiplo de 7.
Explicación
Créditos
fuente
,w=-~h*2+1,i=h+1
a,i=h+1,w=i*2+1
i-~i
lugar dei*2+1
Stax , 23 bytes
Ejecutar y depurarlo
Desempaquetado, sin golf y comentado, se ve así.
Ejecute este
fuente