Dada la espiral de tamaño Sy el escalón N, genera la S*Sespiral "cuadrada" que tiene Nasteriscos, construidos desde el radio exterior al interior en el sentido de las agujas del reloj.
Casos de prueba (ejemplos) a continuación.
Entrada:
4 3Salida:
***Entrada:
4 6Salida:
**** * *Entrada:
4 11Salida:
**** * * * ****Entrada:
6 18Salida:
****** * * * * * * ******Entrada:
6 22Salida:
****** *** * * * * * * * ******Entrada:
6 27Salida:
****** ****** * ** * ** * ** ******Entrada:
1 1Salida:
*
No es necesario manejar los casos cuando:
los
Nasteriscos proporcionados no pueden "encajar" en la espiral deS*Sdimensiones dadas .ya sea
NoSes cero.
El desafío es el código de golf, gana la respuesta de bytes más cortos, se puede usar cualquier idioma.
Su salida puede tener tantos espacios finales (pero no iniciales) / líneas nuevas como desee.

Stamaño (o al menos diámetro ) en lugar de radioRespuestas:
MATL ,
1716 bytesPruébalo en línea!
Explicación (con ejemplo)
Considere las entradas
4y11como ejemplo.fuente
Stax , 19 bytes
Ejecutar y depurarlo
Comienza construyendo una cadena que tiene todos los caracteres en el resultado con todos los asteriscos alineados a la izquierda. Luego, toma cortes cada vez más grandes del extremo de la cadena y los "envuelve" alrededor de una cuadrícula a medida que gira la cuadrícula.
Aquí está el mismo programa, desempaquetado, sin golf y comentado.
Ejecutar y depurarlo
fuente
Python 2 , 117 bytes
Pruébalo en línea!
fuente
APL (Dyalog) , 65 bytes
Pruébalo en línea!
El código para la matriz espiral se toma de otra respuesta mía .
fuente
Nes extraño :)PHP, 118 bytes
ajusté y jugué mi solución para la espiral del alfabeto .
Ejecutar
php -nr '<code>' <S> <N>o probarlo en línea .fuente
Python 2 , 150 bytes
Pruébalo en línea!
fuente
Carbón , 34 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Entrada
N.Las longitudes de los brazos espirales (con exclusión de las esquinas) son
S-1,S-1,S-1,S-2,S-2,S-3, ...,3,2,2,1,1,1. Esto se forma comenzando con el rango de0hasta, pero excluyendo2S, cambiando el 0 a 1, invirtiéndolo, agregando 1 a cada elemento después del primero, y finalmente enteros dividiendo todos los elementos por 2. Esta lista luego se repite.Si quedan menos estrellas para dibujar que la longitud del siguiente brazo, reduzca el brazo a esa longitud.
Dibuja el número apropiado de estrellas.
Resta del número de estrellas restantes.
Gire la dirección del dibujo 90 ° en sentido horario.
fuente
J,
6056 bytes-4 Bytes modificando el proceso de construcción para la espiral para que no sea necesario restarlo de y ^ 2
Pruébalo en línea!
Explicación
próximamenteahora.Explicación:
Ejemplos:
fuente
Kotlin ,
361355353334 bytes6 bytes guardados gracias a Jonathan
2 bytes guardados cambiando a cuando se
guardaron 19 bytes cambiando a lambda y siguiendo los bordes exteriores
Pruébalo en línea!
fuente
==' 'puede ser reemplazado por<'*'. Tambiénd==0cond<1yd==3cond>2. Parecen campos de golf bastante fundamentales, por lo que probablemente también haya otros.Java 10,
284282281263 bytesUn reto divertido!
Pruébelo en línea aquí .
Gracias a Kevin Cruijssen por jugar al golf 18 bytes.
Versión sin golf:
fuente
var bse agrega a para que solo tenga que hacer elx>0?i<u:i>lyy>0?j<u:j>luna vez cada uno, en lugar de dos veces cada uno.JavaScript (Node.js) ,
167164163 bytes,lugar de mapa (1 byte)Pruébalo en línea!
fuente
return a.join` `.split`,`.join``..split, `.join`` no muestra la espiral" muy bien "(con nuevas líneas), así que creo que es un problema