login
a(n) is the smallest Fibonacci number that is obtained by placing digits anywhere in n; a(n) = n if n is a Fibonacci number.
2

%I #19 Jan 21 2023 01:59:34

%S 1,2,3,34,5,610,377,8,89,610,4181,121393,13,144,1597,10946,1597,4181,

%T 1597,832040,21,514229,233,2584,2584,28657,28657,2584,121393,832040,

%U 317811,832040,233,34,3524578,46368,377,46368,121393,832040,4181,514229

%N a(n) is the smallest Fibonacci number that is obtained by placing digits anywhere in n; a(n) = n if n is a Fibonacci number.

%H Robert Israel, <a href="/A080471/b080471.txt">Table of n, a(n) for n = 1..10000</a>

%p IsSubList:= proc(T, S)

%p local i;

%p if T = [] then return true fi;

%p if S = [] then return false fi;

%p i:= ListTools:-Search(T[1],S);

%p if i = 0 then false else procname(T[2..-1],S[i+1..-1]) fi

%p end proc:

%p f:= proc(n) local T,S,k,v;

%p T:= convert(n,base,10);

%p for k from 1 do

%p v:= combinat:-fibonacci(k);

%p S:= convert(v,base,10);

%p if IsSubList(T,S) then return v fi

%p od

%p end proc:

%p map(f, [$1..100]); # _Robert Israel_, Mar 10 2020

%t a[n_] := Block[{p = RegularExpression[ StringJoin @@ Riffle[ ToString /@ IntegerDigits[ n], ".*"]], f, k=2}, While[! StringContainsQ[ ToString[f = Fibonacci[ k++]], p]]; f]; Array[a, 42] (* _Giovanni Resta_, Mar 10 2020 *)

%o (Python)

%o def dmo(n, t):

%o if t < n: return False

%o while n and t:

%o if n%10 == t%10:

%o n //= 10

%o t //= 10

%o return n == 0

%o def fibo(f=1, g=2):

%o while True: yield f; f, g = g, f+g

%o def a(n):

%o return next(f for f in fibo() if dmo(n, f))

%o print([a(n) for n in range(1, 77)]) # _Michael S. Branicky_, Jan 21 2023

%Y Cf. A068164, A068165, A080470.

%K base,nonn

%O 1,2

%A _Amarnath Murthy_, Mar 07 2003

%E Corrected and extended by _Ray Chandler_, Oct 11 2003