login
Position of the start of the first occurrence of n after the decimal point in Pi = 3.14159265358979323846264338327950288...
44

%I #46 Jun 22 2022 07:43:22

%S 32,1,6,9,2,4,7,13,11,5,49,94,148,110,1,3,40,95,424,37,53,93,135,16,

%T 292,89,6,28,33,186,64,137,15,24,86,9,285,46,17,43,70,2,92,23,59,60,

%U 19,119,87,57,31,48,172,8,191,130,210,404,10,4,127,219,20,312,22,7,117,98,605

%N Position of the start of the first occurrence of n after the decimal point in Pi = 3.14159265358979323846264338327950288...

%C This is A037008(1), A037000(1), A037001(1), A037002(1), A037003(1), A037004(1), A037005(1), A036974(1), A037006(1), A037007(1) etc.

%H Ronald R. King and T. D. Noe, <a href="/A014777/b014777.txt">Table of n, a(n) for n = 0..9999</a>

%H Dave Andersen, <a href="http://www.angio.net/pi/piquery">The Pi-Search Page</a>.

%H Tom Crawford and Brady Haran, <a href="https://www.youtube.com/watch?v=W20aT14t8Pw">Strings and Loops within Pi</a>, Numberphile video (2020)

%H Anders Hellström, <a href="/A014777/a014777_1.spyx.txt">Sage program</a>, Feb 02 2017

%e In the decimal expansion of Pi, the string "0" is found at position 32 counting from the first digit after the decimal point. The string "1" is found at position 1, the string "2" at position 6, the string "3" at position 9, etc.

%t Table[-1 + SequencePosition[#, IntegerDigits@ n][[1, 1]], {n, 0, 68}] &@ First@ RealDigits@ N[Pi, 10^4] (* _Michael De Vlieger_, Aug 10 2016, Version 10.1 *)

%o (Magma) k := 700; R := RealField(k); [ Position(IntegerToString(Round(10^k*(-3 + Pi(R)))), IntegerToString(n)) : n in [0..68] ]; /* _Klaus Brockhaus_, Feb 15 2007 */

%o (PARI) M14777=Map(); A014777(n)={iferr(mapget(M14777, n), E, my(i=if(n>9, A014777(n\10), 1), d=if(n, digits(n), [0]), j); while(i++, j=#d; until(!j, d[j]==A000796(i+j--) || next(2)); break); mapput(M14777, n, i--); i)} \\ _M. F. Hasler_, Jun 21 2022

%o (Python)

%o from mpmath import mp

%o def A014777(n):

%o if not (i := A014777.pos.get(n, 0)):

%o d = str(n); s = 2 # starting position for search

%o while (i := A014777.pi.find(d, s)) < 1:

%o s = max(len(A014777.pi) - len(d), 2)

%o with mp.workdps(s + 99 if s < 500 else s*6//5): # new precision

%o A014777.pi = str(mp.pi - 5/mp.mpf(10)**mp.dps) # don't round

%o i -= 1; A014777.pos[n] = i

%o return i

%o A014777.pi = ''; A014777.pos = {} # _M. F. Hasler_, Jun 21 2022

%Y Cf. A000796, A078197, A103186 (another version).

%Y Cf. A037008, A037000, A037001, A037002, A037003, A037004, A037005, A036974, A037006, A037007.

%K nonn,base

%O 0,1

%A Paul Simon (paulsimn(AT)microtec.net) and _Simon Plouffe_

%E More terms from _Klaus Brockhaus_, Feb 15 2007