El reto
Dada una entrada entera, devuelve el primer número de Fibonacci que contiene la entrada dentro de sí mismo junto con el índice de ese número de Fibonacci (índices que comienzan en 0 o 1, hasta usted, pero mencione cuál en su respuesta). Por ejemplo, si se le da la entrada de 12, el programa volvería 26: 121393
ya que 12 se encuentra dentro del número ( 12 1393) y está en el índice 26 de los números de Fibonacci.
Ejemplos
Dada la entrada:
45
Su programa debería generar:
33: 3524578
Entrada:
72
Salida:
54: 86267571272
Entrada:
0
Salida:
0: 0
Entrada:
144
Salida:
12: 144
Puntuación
Este es el código de golf , por lo que gana la respuesta más corta en cada idioma.
Respuestas:
Jalea , 10 bytes
Pruébalo en línea!
Cómo funciona
fuente
D
Python 2 , 56 bytes
Pruébalo en línea!
fuente
Perl 6 , 30 bytes
Pruébalo en línea!
first
es una función que devuelve el primer elemento de una secuencia que pasa una prueba, y convenientemente toma un:kv
adverbio que le dice que devuelva tanto la clave (índice) como el valor coincidente.fuente
:p
adverbio en lugar de:kv
.Lote, 104 bytes
Funciona
n=0..45
debido al rango limitado de la aritmética de enteros de Batch. Explicación: Batch no tiene una prueba de coincidencia incorporada, pero tiene un operador que puede reemplazar cadenas literales con otras cadenas literales, por lo que, por ejemplo,if "%s:l=%"=="%s%"
es verdadero si%s%
no está vacío pero no contienel
. El uso decall
es entonces un truco para sustituir%1
(la entrada) en el operador de reemplazo, sin embargocall
, no funciona en las declaraciones de flujo de control, por lo que es necesaria una asignación temporal intermedia.fuente
Jalea , 15 bytes
Pruébalo en línea!
fuente
Javascript ES6, 68 caracteres
Prueba:
fuente
Python 3, 76 bytes
fuente
Emojicode , 133 bytes
Pruébalo en línea!
fuente
Dyalog APL, 39 bytes
Usando la recursión de la cola. No intente 72, romperá su máquina porque está recalculando fibonacci en todas las llamadas.
Pruébalo en línea!
fuente
Mathematica, 119 bytes
1 indexado
Pruébalo en línea!
fuente
En realidad , 13 bytes
Pruébalo en línea!
Explicación:
fuente
R, 65 bytes
La recursión estándar para generar Fibnums, pero en lugar de terminar en base a
n
, termina cuandob
coincide con la expresión regularx
. Esto realmente funciona sorprendentemente bien. Supuse que usar expresiones regulares con números requeriría mucha molestia al convertirlos en cadenas, pero eso no parece ser necesario :)Esto también tiene que sobrepasar la recursión por 1 paso, mediante la comprobación en
b
lugar dea
y después restando1
den
. Esto es para asegurarse de quef(0)
funcione correctamente.Esto falla para la mayoría de los valores cuando la entrada excede
1001
, debido a maxint. Si reemplazamosa
yb
para bigints, esto funciona para entradas más altas (las pruebas actuales están enx = 11451
)fuente
JavaScript ES6,
797875 bytes-1 byte por paso gallina
-3 bytes por Neil
fuente
eval()
lugar de{ return}
guardar un byte, y puede soltarlot=
ya que no está usando la recursividad:i=>eval('d=a=b=1;while(!~(a+"").indexOf(i+""){c=b;b=a+b;a=c;d++};d+": "+a')
String.prototype.indexOf
convierte automáticamente su parámetro en una cadena, no es necesario hacerlo explícitamente. También parece que ha copiado el error tipográfico de @ StepHen (tiene más(
s que)
s).C # (.NET Core) , 99 bytes
Pruébalo en línea!
Toma la entrada como un entero, devuelve una cadena con la salida.
fuente
Haskell , 84 bytes
Pruébalo en línea!
fuente
PHP, 80 bytes
El guión es bastante sencillo, simplemente almacena los términos actuales y siguientes de la secuencia en $ a y $ b en todo momento. Para permitir el término 0 de 0, a $ a y $ b se les asignan inicialmente los valores para el término -1 (1) y el término 0 (0) respectivamente.
Ambos valores se recalculan en una sola expresión, que son dos asignaciones en una; efectivamente:
Si el valor de entrada coincide con el comienzo del término, la función strpos () devolverá 0 (que es falsey y daría un falso negativo), pero en el mundo Wonderphul de PHP, aunque
false == 0
es verdadero yfalse < 0
es falso, ¡false < -1
es verdadero! Y así, el uso de esta comparación ahorra cinco bytes en comparación con!==false
.fuente
Japt ,
1714 bytesGuardado 3 bytes gracias a @JustinMariner
Pruébalo en línea!
Explicación
fuente
_ŬøU}a@[XMgX]
. Utilizandos1 q
para obtener el último elemento, lo que permite soltar el<space>s
PHP ,
163141 bytesPruébalo en línea!
Usos
$b[0] = 0;
y$b[1] = 1;
para el inicio de la secuencia fibfuente
Perl 5 , 67 + 1 (-p) = 68 bytes
Pruébalo en línea!
fuente
PHP , 93 bytes
Bucle simple a través de la secuencia de Fibonacci. La verificación de nuestro número de entrada se realiza en
strpos(" $a[$i]","$argv[1]")
; el espacio extra se debe astrpos
que devolverá falso-y si la 'aguja' se encuentra al comienzo de la cadena. Terminamos si se encuentra la entrada y hacemos eco de la cadena requerida.Pruébalo en línea!
fuente
Lisp común, 105 bytes
Pruébalo en línea!
fuente