El Doctor, al tratar de escapar de las fuerzas Dalek, decidió enviarlos en un giro viajando en varios bolsillos del espacio en un movimiento en espiral.
Dependiendo de la naturaleza del espacio-tiempo disponible, El Doctor necesita ingresar a la TARDIS para controlar la altura y el ancho de la sección del espacio y su punto de entrada con el cual comenzar la espiral.
La sección del espacio se puede imaginar como una cuadrícula h x w llena de enteros secuenciales de izquierda a derecha, de arriba a abajo, comenzando con 1.
La posición de inicio se proporciona como rc para la fila y la columna ... A partir de esto, el software de TARDIS necesita escupir la lista ordenada de enteros obtenida en espiral hacia afuera en sentido antihorario desde la fila r columna c , comenzando hacia arriba ...
Su tarea, como acompañante del Doctor, es programar la TARDIS para que tome cuatro números, en el formato height width row column
y que determine qué sector de espacio necesita recorrer la TARDIS para que coincida con el movimiento en espiral que se describe a continuación ...
Entrada 1
5 5 3 3
(Cuadrícula de 5 x 5, comenzando en la posición 3,3)
Salida 1
13 8 7 12 17 18 19 14 9 4 3 2 1 6 11 16 21 22 23 24 25 20 15 10 5
Explicando la salida
Rejilla original
Espiral generada
Entrada 2
2 4 1 2
(2 x 4 cuadrícula comenzando en la posición 1,2)
Salida 2
2 1 5 6 7 3 8 4
Explicando la salida
Ligeramente diferente como la espiral ahora debe circular alrededor de la cuadrícula para generar la salida respectiva ...
Rejilla original
Espiral generada
Reglas:
Este es el código de golf, por lo que la longitud más corta del código obtiene la aprobación.
Los ejemplos anteriores deben usarse para probar su código. Si no proporciona la salida respectiva, hay algo mal ...
En su respuesta se deben proporcionar versiones de código tanto en golf como en golf ...
¡Buena suerte!
Respuestas:
JavaScript (ES6) 124
163 177Editar De una forma totalmente diferente, no necesita una matriz para almacenar las celdas visitadas. Usando el hecho de que el lado de la espiral aumenta de 1 después de cada 2 vueltas.
fuente
Pitón 3, 191
Probablemente no sea un gran puntaje, pero aquí va:
Nos movemos a lo largo de la espiral aumentando la longitud del lado después de cada segundo giro. Si nuestra posición está dentro de la cuadrícula dada, imprimimos su número correspondiente.
Las variables son:
fuente