Tarea
El prepend, append-Sequence se define de forma recursiva, así
- a (1) = 1
- a (n) = a (n-1) .n, si n es par
- a (n) = na (n-1), si n es impar
donde el . representa una concatenación de enteros.
Entonces, los primeros términos son: 1,12,312,3124,53124,531246,7531246,...
Este es A053064 .
Su tarea es, dado un número entero a> 0 para volver n , tal que el n -ésimo elemento en el prepend, append-secuencia es igual a una y si hay tal n existe retorno 0, un número negativo o error fuera, etc.
Reglas
- La entrada puede tomarse como un entero, una cadena, una lista de caracteres / dígitos, etc.
- La salida puede imprimirse en STDOUT o devolverse (entero, cadena, etc. está bien)
- En una entrada no válida y en el caso de que no exista tal n , su programa puede hacer otra cosa que devolver un número entero positivo (por ejemplo, bucle para siempre, devolver 0, etc.)
- Puede optar por utilizar la indexación 0, pero la salida en caso de que no exista n no puede ser 0
Casos de prueba
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
yn*(int(log(n))+1)+a(n-1)
?Respuestas:
JavaScript (ES6), 40 bytes
Toma la entrada como una cadena. Lanza un error de recursión si no se encuentra ningún índice.
Manifestación
Mostrar fragmento de código
fuente
f=(n,s=k='1')=>n-s?f(n,++k&1?k+s:s+k):k
C # (.NET Core) ,
83, 80, 6059 bytesPruébalo en línea!
Toma la entrada como una cadena en una función lambda. 1 indexado. Devuelve el índice del valor de verdad o bucles infinitos para una "falsey"
fuente
Python 2 , 63 bytes
-1 byte gracias a @EriktheOutgolfer .
Pruébalo en línea!
Python 2 , 64 bytes
-18 bytes gracias a @officialaimm , ¡porque no me di cuenta de que se permitía el error!
Pruébalo en línea!
Python 2 , 82 bytes (no se repite para siempre)
Este regresa
0
por entradas inválidas.Pruébalo en línea!
fuente
f=lambda x,i='1',j=2:i!=`x`and f(x,[i+`j`,`j`+i][j%2],j+1)or~-j
sys.setrecursionlimit()
. ¿Puedes proporcionar un tio?x=1
? Ox=12
? Pensé que solo arrojaba ese error al menosx=151311975312468101214
o algo así.Jalea , 12 bytes
Pruébalo en línea!
Explicación:
fuente
05AB1E , 14 bytes
Pruébalo en línea! o como un conjunto de pruebas
Explicación
0 indexado .
Devuelve -1 si la entrada no está en la secuencia.
fuente
g
eliminado y lo anexar / anteponer acortado. Eliminaré mi respuestaR , 73 bytes
Lee desde stdin y devuelve el valor del índice (impreso implícitamente). Bucles infinitos cuando el valor no está en la secuencia.
F
es por defecto,FALSE
que se convierte0
cuando se usa en aritmética.Pruébalo en línea!
fuente
Mathematica, 135 bytes
fuente
Jalea ,
19 1815 bytesUn enlace monádico que toma y devuelve enteros.
Pruébalo en línea! (Muy lento: tarda unos 50 segundos en TIO solo para confirmar que
3124
está en el índice4
)Para una versión mucho más rápida, use el byte anterior de 18 (solo verifica la longitud de la entrada, que es suficiente).
¿Cómo?
fuente
211917151311975312468101214161820
?Swift 4 , 92 bytes
Esto se repite infinitamente para casos no válidos, por lo que no los incluí en el enlace de prueba.
Banco de pruebas.
Divertidamente, es más largo con un cierre:
Banco de pruebas.
fuente
Haskell ,
11585 bytesPruébalo en línea!
fuente
Perl 5 , 54 + 1 (-n) = 55 bytes
Pruébalo en línea!
No devuelve nada si no se encuentra.
fuente
Haskell,
757157 bytesToma
n
como una cuerda.Pruébalo en línea!
fuente