O desafio
Dada uma entrada inteira, retorne o primeiro número de Fibonacci que contém a entrada em si, juntamente com o índice desse número de Fibonacci (índices começando em 0 ou 1 - até você, mas mencione qual em sua resposta). Por exemplo, se for dada a entrada 12, o programa retornará 26: 121393
como 12, sendo encontrado dentro do número ( 12 1393) e está no índice 26 dos números de Fibonacci.
Exemplos
Dada a entrada:
45
Seu programa deve gerar:
33: 3524578
Entrada:
72
Saída:
54: 86267571272
Entrada:
0
Saída:
0: 0
Entrada:
144
Saída:
12: 144
Pontuação
Isso é código-golfe , então a resposta mais curta em cada idioma vence.
Respostas:
Gelatina , 10 bytes
Experimente online!
Como funciona
fonte
D
...Python 2 , 56 bytes
Experimente online!
fonte
Perl 6 , 30 bytes
Experimente online!
first
é uma função que retorna o primeiro elemento de uma sequência que passa no teste e, convenientemente, recebe um:kv
advérbio que diz para retornar a chave (índice) e o valor correspondente.fonte
:p
advérbio em vez de:kv
.Lote, 104 bytes
Funciona
n=0..45
devido ao intervalo limitado da aritmética inteira do Lote. Explicação: O lote não possui um teste de correspondência interno, mas possui um operador que pode substituir cadeias literais por outras cadeias literais, por exemplo, por exemploif "%s:l=%"=="%s%"
é verdade se%s%
não estiver vazio, mas não contiverl
. O uso decall
é, então, um truque para substituir%1
(a entrada) no operador de substituição, no entantocall
, não funciona nas declarações de fluxo de controle, portanto é necessária uma atribuição temporária intermediária.fonte
Geléia , 15 bytes
Experimente online!
fonte
Javascript ES6, 68 caracteres
Teste:
fonte
Python 3, 76 bytes
fonte
Emojicode , 133 bytes
Experimente online!
fonte
Dyalog APL, 39 bytes
Usando recursão da cauda. Não tente 72, ele irá danificar sua máquina porque ela recalcula os fibonacci em todas as chamadas.
Experimente online!
fonte
Mathematica, 119 bytes
Indexado 1
Experimente online!
fonte
Na verdade , 13 bytes
Experimente online!
Explicação:
fonte
R, 65 bytes
A recursão padrão para gerar Fibnums, mas em vez de terminar com base em
n
, termina quandob
corresponde ao regexx
. Isso realmente funciona surpreendentemente bem. Eu assumi que o uso de regex com numéricos exigiria muito trabalho para convertê-los em strings, mas isso não parece ser necessário :)Isso também precisa ultrapassar a recursão em 1 etapa, marcando em
b
vez dea
e subtraindo1
den
. Isso é para garantir quef(0)
funcione corretamente.Isso falha na maioria dos valores quando a entrada excede
1001
, devido ao maxint. Se substituirmosa
eb
por bigints, isso funcionará para entradas mais altas (o teste atual está emx = 11451
)fonte
JavaScript ES6,
797875 bytes-1 byte por Step Hen
-3 bytes por Neil
fonte
eval()
em vez de{ return}
salvar um byte, e você pode soltar ot=
desde que você não está usando recursão:i=>eval('d=a=b=1;while(!~(a+"").indexOf(i+""){c=b;b=a+b;a=c;d++};d+": "+a')
String.prototype.indexOf
converte automaticamente seu parâmetro em uma string, sem a necessidade de fazê-lo explicitamente. Além disso, parece que você copiou o erro de digitação do @ StepHen (você tem mais(
s que)
s).C # (.NET Core) , 99 bytes
Experimente online!
Recebe a entrada como um número inteiro, retorna uma string com a saída.
fonte
Haskell , 84 bytes
Experimente online!
fonte
PHP, 80 bytes
O script é bastante simples, simplesmente armazenando os termos atuais e seguintes da sequência em $ a e $ b por toda parte. Para permitir o 0º termo de 0, $ a e $ b são inicialmente atribuídos aos valores dos -1º termo (1) e 0º termo (0), respectivamente.
Ambos os valores são recalculados em uma única expressão, que são duas atribuições em uma; efetivamente:
Se o valor de entrada corresponder ao início do termo, a função strpos () retornará 0 (que é falsey e daria um falso negativo), mas no Wonderphul World do PHP, embora
false == 0
seja verdadeiro efalse < 0
falso,false < -1
é verdadeiro! E assim, o uso dessa comparação salva cinco bytes em comparação com!==false
.fonte
Japonês ,
1714 bytesGuardado 3 bytes graças a @JustinMariner
Experimente online!
Explicação
fonte
_ŬøU}a@[XMgX]
. Usandos1 q
para obter o último item, o que permite soltar o<space>s
PHP ,
163141 bytesExperimente online!
Usa
$b[0] = 0;
e$b[1] = 1;
para o início da sequência fibfonte
Perl 5 , 67 + 1 (-p) = 68 bytes
Experimente online!
fonte
PHP , 93 bytes
Loop simples através da sequência de Fibonacci. A verificação do nosso número de entrada é feita em
strpos(" $a[$i]","$argv[1]")
; o espaço extra é porquestrpos
retornará falso-y se a 'agulha' for encontrada no início da string. Terminamos se a entrada for encontrada e ecoar a string necessária.Experimente online!
fonte
Lisp comum, 105 bytes
Experimente online!
fonte