Pegue os números 0, 1, 2, 3, 4, ...
e organize-os em uma espiral no sentido horário, começando para baixo, escrevendo cada dígito em seu próprio quadrado separado.
Em seguida, dado um dos quatro caracteres ASCII distintos e consistentes (sua escolha) representando um eixo e um número inteiro de entrada n
, imprima os primeiros n
termos da sequência descrita selecionando quadrados ao longo do eixo correspondente.
Por exemplo, abaixo está a espiral arranjada até a metade 29
. Suponha que usamos u / d / l / r
para nossos quatro caracteres, representando up / down / left / right
. Então, dados u
como entrada, produzimos 0, 5, 1, 4 ...
(o eixo y positivo) até o n
quinto termo. Se, em vez disso, recebêssemos l
como entrada, seria 0, 3, 1, 1 ...
até o n
quinto termo.
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 são sequências no OEIS:
- http://oeis.org/A033953 para o eixo x positivo
- http://oeis.org/A033988 para o eixo y positivo
- http://oeis.org/A033989 para o eixo x negativo
- http://oeis.org/A033990 para o eixo y negativo
Exemplos
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]
Regras
- Se aplicável, você pode supor que a entrada / saída caiba no tipo Inteiro nativo do seu idioma.
- Se você estiver usando números inteiros para representar os quatro eixos, poderá usar números inteiros negativos sem violar as regras.
- A entrada e saída podem ser fornecidas por qualquer método conveniente .
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.