Prenez les nombres 0, 1, 2, 3, 4, ...
et disposez-les dans une spirale dans le sens des aiguilles d'une montre, en commençant vers le bas, en écrivant chaque chiffre dans son propre carré séparé.
Puis, étant donné l'un des quatre caractères ASCII distincts et cohérents (votre choix) représentant un axe et un entier d'entrée n
, sortez les premiers n
termes de la séquence décrite en sélectionnant des carrés le long de l'axe correspondant.
Par exemple, ci-dessous se trouve la spirale arrangée jusqu'à mi-parcours 29
. Supposons que nous utilisons u / d / l / r
pour nos quatre caractères, représentant up / down / left / right
. Puis, u
en entrée, nous sortons 0, 5, 1, 4 ...
(l'axe y positif) jusqu'au n
e terme. Si on nous donnait plutôt l
comme entrée, ce serait 0, 3, 1, 1 ...
jusqu'au n
terme.
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
Ce sont des séquences sur OEIS:
- http://oeis.org/A033953 pour l'axe x positif
- http://oeis.org/A033988 pour l'axe y positif
- http://oeis.org/A033989 pour l'axe x négatif
- http://oeis.org/A033990 pour l'axe y négatif
Exemples
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]
Règles
- Le cas échéant, vous pouvez supposer que l'entrée / sortie s'adaptera au type Integer natif de votre langue.
- Si vous utilisez des entiers pour représenter les quatre axes, vous pouvez utiliser des entiers négatifs sans enfreindre les règles.
- L'entrée et la sortie peuvent être fournies par n'importe quelle méthode pratique .
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
la source
Réponses:
Python 2 ,
94898483747270 octetsJ'ai utilisé WolframAlpha et déterminé qu'une limite supérieure de 5 n > 4n 2 + 3n semble être suffisante. Il peut être changé à 9 n sans frais. Pour essayer des entrées plus grandes, utilisez
9*n*n
au lieu de5**n
pour éviter de manquer de mémoire.Essayez-le en ligne!
Les entrées pour les directions sont:
Enregistré 14 octets grâce à Rod
Enregistré 2 octets grâce à Jonathan Allan
la source
MATL , 32 octets
L' entrée est
n
,a
oùa
représente l'axe de la manière suivante:0
: la gauche;1
: en haut;2
: droite;3
: vers le bas.La sortie est une chaîne.
Essayez-le en ligne! Ou vérifiez tous les cas de test .
la source
Gelée ,
1918 octetsUtilise l' astuce 5 n de la réponse Python de mbomb007
Un lien dyadique prenant
n
à gauche etd
et entier de:[-3,-1,1,3]:[v,<,^,>]
Essayez-le en ligne!
Une alternative de 20 octets qui est à la fois beaucoup plus rapide et qui ne se trompe pas pour un si petit n est:
Essayez-le en ligne!
Comment?
la source
fonctionnera pour n considérable (comme +1000)
JavaScript (Node.js) , 104 octets
Essayez-le en ligne!
Explication
C- nième chiffre de la constante de Champernowne
________________________________________________________
Méthode moins efficace (ne fonctionnera pas pour 1000+)
JavaScript (Node.js) , 81 octets
Essayez-le en ligne!
la source
Stax , 13 octets
Exécuter et déboguer
Il prend l'entrée avec la direction, suivie par le compte. Droite, en haut, à gauche, et vers le bas sont
1
,3
,5
et7
respectivement. Il faut une minute pour exécuter les trois cas de test fournis.la source