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.
fonte
Respostas:
Python 2 ,
94898483747270 bytesEu usei o WolframAlpha e determinei que um limite superior de 5 n > 4n 2 + 3n parece ser suficiente. Pode ser alterado para 9 n sem nenhum custo. Para tentar entradas maiores, use em
9*n*n
vez de5**n
para evitar a falta de memória.Experimente online!
As entradas para instruções são:
Economizou 14 bytes graças a Rod
Economizou 2 bytes graças a Jonathan Allan
fonte
MATL , 32 bytes
De entrada é
n
,a
ondea
representa o eixo da seguinte forma:0
: esquerda;1
: acima;2
: direita;3
: baixa.Saída é uma string.
Experimente online! Ou verifique todos os casos de teste .
fonte
Geléia ,
1918 bytesUsa o truque 5 n da resposta Python do mbomb007
Um link diádico
n
à esquerda ed
e inteiro de:[-3,-1,1,3]:[v,<,^,>]
Experimente online!
Uma alternativa de 20 bytes que é muito mais rápida e não falha automaticamente para n tão pequeno é:
Experimente online!
Como?
fonte
funcionará por n considerável (como +1000)
JavaScript (Node.js) , 104 bytes
Experimente online!
Explicação
C-ésimo dígito da constante de Champernowne
________________________________________________________
Método menos eficiente (não funcionará para mais de 1000)
JavaScript (Node.js) , 81 bytes
Experimente online!
fonte
Stax , 13 bytes
Execute e depure
Leva entrada com a direção, seguida pela contagem. Direita, cima, esquerda, e para baixo são
1
,3
,5
e,7
respectivamente. Demora um minuto inteiro para executar os três casos de teste fornecidos.fonte