Tâche
Le préfixe, la séquence append est défini de manière récursive, comme ceci
- a (1) = 1
- a (n) = a (n-1) .n, si n est pair
- a (n) = na (n-1), si n est impair
où le . représente une concaténation entière.
Les premiers termes sont donc les suivants: 1,12,312,3124,53124,531246,7531246,...
Il s'agit du A053064 .
Votre tâche est, étant donné un entier a> 0 pour revenir n , tel que le n ième élément dans le précédez, append-séquence est égal à un et si aucun n existe return 0, un numéro de négatif ou d'une erreur sur etc.
Règles
- L'entrée peut être prise comme un entier, une chaîne, une liste de caractères / chiffres, etc.
- La sortie peut être imprimée sur STDOUT ou renvoyée (entier, chaîne, etc. est très bien)
- Sur une entrée invalide et dans le cas où un tel n n'existe pas, votre programme peut faire autre chose que retourner un entier positif (par exemple, boucle pour toujours, retourne 0, etc.)
- Vous pouvez choisir d'utiliser l'indexation 0, mais la sortie dans le cas où aucun n n'existe ne peut pas être 0
Cas de test
1 -> 1
12 -> 2
21 -> 0
123 -> 0
312 -> 3
213 -> 0
211917151311975312468101214161820 -> 21
2119171513119753102468101214161820 -> 0
333129272523211917151311975312468101214161820222426283031 -> 0
999795939189878583817977757371696765636159575553514947454341393735333129272523211917151311975312468101214161820222426283032343638404244464850525456586062646668707274767880828486889092949698100 -> 100
a(n-1)*(int(log(n))+1)+n
etn*(int(log(n))+1)+a(n-1)
?Réponses:
JavaScript (ES6), 40 octets
Prend l'entrée sous forme de chaîne. Lance une erreur de récursivité si aucun index n'est trouvé.
Démo
Afficher l'extrait de code
la source
f=(n,s=k='1')=>n-s?f(n,++k&1?k+s:s+k):k
C # (.NET Core) ,
83, 80, 6059 octetsEssayez-le en ligne!
Prend l'entrée sous forme de chaîne dans une fonction lambda. 1 indexé. Renvoie l'index de la valeur pour truey, ou boucle infiniment pour un "falsey"
la source
Python 2 , 63 octets
-1 octet grâce à @EriktheOutgolfer .
Essayez-le en ligne!
Python 2 , 64 octets
-18 octets grâce à @officialaimm , car je n'ai pas remarqué que l'erreur était autorisée!
Essayez-le en ligne!
Python 2 , 82 octets (ne boucle pas indéfiniment)
Celui-ci renvoie
0
des entrées non valides.Essayez-le en ligne!
la source
f=lambda x,i='1',j=2:i!=`x`and f(x,[i+`j`,`j`+i][j%2],j+1)or~-j
sys.setrecursionlimit()
. Pouvez-vous fournir un tio?x=1
? Oux=12
? Je pensais que cela ne faisait que jeter une telle erreur pour au moinsx=151311975312468101214
ou quelque chose.Gelée , 12 octets
Essayez-le en ligne!
Explication:
la source
05AB1E , 14 octets
Essayez-le en ligne! ou comme suite de tests
Explication
0 indexé .
Renvoie -1 si l'entrée n'est pas dans la séquence.
la source
g
suppression et la chose append / prepend raccourcie. Je vais supprimer ma réponseR , 73 octets
Lit à partir de stdin et renvoie la valeur de l'index (imprimée implicitement). Boucles infinies lorsque la valeur n'est pas dans la séquence.
F
est par défautFALSE
qui est converti en0
lorsqu'il est utilisé en arithmétique.Essayez-le en ligne!
la source
Mathematica, 135 octets
la source
Gelée ,
19 1815 octetsUn lien monadique prenant et renvoyant des entiers.
Essayez-le en ligne! (très lent - prend ~ 50s sur TIO juste pour confirmer que
3124
c'est à l'index4
)Pour une version beaucoup plus rapide, utilisez les 18 octets précédents (vérifie uniquement jusqu'à la longueur de l'entrée, ce qui est suffisant).
Comment?
la source
211917151311975312468101214161820
?Swift 4 , 92 octets
Cela fait une boucle infinie pour les cas invalides, donc je ne les ai pas inclus dans le lien de test.
Suite de tests.
Amusant, il est plus long avec une fermeture:
Suite de tests.
la source
Haskell ,
11585 octetsEssayez-le en ligne!
la source
Perl 5 , 54 + 1 (-n) = 55 octets
Essayez-le en ligne!
Ne renvoie rien s'il n'est pas trouvé.
la source
Haskell,
757157 octetsPrend
n
comme une chaîne.Essayez-le en ligne!
la source