Tome los números 0, 1, 2, 3, 4, ...
y organícelos en una espiral en sentido horario, comenzando hacia abajo, escribiendo cada dígito en su propio cuadrado separado.
Luego, dado uno de los cuatro caracteres ASCII distintos y consistentes (su elección) que representan un eje y un entero de entrada n
, emite los primeros n
términos de la secuencia descrita seleccionando cuadrados a lo largo del eje correspondiente.
Por ejemplo, a continuación se muestra la espiral dispuesta hasta la mitad 29
. Supongamos que usamos u / d / l / r
para nuestros cuatro personajes, que representan up / down / left / right
. Luego, dado u
como entrada, sacamos 0, 5, 1, 4 ...
(el eje y positivo) hasta el n
término th. Si, en cambio, se nos da l
como entrada, entonces sería 0, 3, 1, 1 ...
hasta el n
tercer término.
2---3---2---4---2---5---2
| |
2 1---3---1---4---1 6
| | | |
2 2 4---5---6 5 2
| | | | | |
1 1 3 0 7 1 7
| | | | | | |
2 1 2---1 8 6 2
| | | | |
0 1---0---1---9 1 8
| | |
2---9---1---8---1---7 2
Estas son secuencias en OEIS:
- http://oeis.org/A033953 para el eje x positivo
- http://oeis.org/A033988 para el eje y positivo
- http://oeis.org/A033989 para el eje x negativo
- http://oeis.org/A033990 para el eje y negativo
Ejemplos
d 19
[0, 1, 1, 8, 3, 7, 6, 2, 1, 5, 1, 1, 6, 2, 2, 1, 3, 4, 0]
r 72
[0, 7, 1, 7, 4, 2, 8, 1, 1, 3, 1, 2, 0, 2, 3, 1, 3, 4, 6, 5, 5, 5, 7, 7, 8, 8, 9, 6, 8, 1, 1, 1, 2, 3, 1, 8, 0, 6, 1, 7, 0, 9, 2, 8, 4, 3, 2, 1, 1, 7, 2, 6, 2, 1, 3, 3, 5, 5, 3, 2, 2, 0, 4, 3, 2, 5, 4, 6, 5, 0, 5, 1]
u 1
[0]
Reglas
- Si corresponde, puede suponer que la entrada / salida se ajustará al tipo entero nativo de su idioma.
- Si usa números enteros para representar los cuatro ejes, puede usar números enteros negativos sin romper las reglas.
- La entrada y la salida se pueden dar por cualquier método conveniente .
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
fuente
Respuestas:
Python 2 ,
94898483747270 bytesUsé WolframAlpha y determiné que un límite superior de 5 n > 4n 2 + 3n parece ser suficiente. Se puede cambiar a 9 n sin costo. Para probar entradas más grandes, use en
9*n*n
lugar de5**n
evitar quedarse sin memoria.Pruébalo en línea!
Las entradas para las direcciones son:
Guardado 14 bytes gracias a Rod
Guardado 2 bytes gracias a Jonathan Allan
fuente
MATL , 32 bytes
De entrada es
n
,a
, en dondea
representa el eje de la siguiente manera:0
: izquierda;1
: arriba;2
: derecho;3
: abajo.La salida es una cadena.
Pruébalo en línea! O verificar todos los casos de prueba .
fuente
Jalea ,
1918 bytesUtiliza el truco 5 n de la respuesta de Python de mbomb007
Un enlace diádico que toma
n
a la izquierdad
y un entero de:[-3,-1,1,3]:[v,<,^,>]
Pruébalo en línea!
Una alternativa de 20 bytes que es a la vez mucho más rápida y no segfault para un n tan pequeño es:
Pruébalo en línea!
¿Cómo?
fuente
funcionará durante n considerable (como +1000)
JavaScript (Node.js) , 104 bytes
Pruébalo en línea!
Explicación
Enésimo dígito de la constante de Champernowne
________________________________________________________
Método menos eficiente (no funcionará para más de 1000)
JavaScript (Node.js) , 81 bytes
Pruébalo en línea!
fuente
Stax , 13 bytes
Ejecutar y depurarlo
Toma entrada con la dirección, seguido del conteo. Derecha, arriba, izquierda, abajo y son
1
,3
,5
, y7
respectivamente. Se tarda un minuto completo en ejecutar los tres casos de prueba proporcionados.fuente