Re: Seaching in Pi a sequence. Looking for a faster method
- To: mathgroup at smc.vnet.net
- Subject: [mg119604] Re: Seaching in Pi a sequence. Looking for a faster method
- From: rafapa <rafapa at us.es>
- Date: Sun, 12 Jun 2011 05:06:52 -0400 (EDT)
- References: <isss68$jdf$1@smc.vnet.net>
On Jun 10, 12:38 pm, Guillermo Sanchez <guillermo.sanc... at hotmail.com> wrote: > Dear Group > > I have developed this function > > piesimo[n_, m_, r_] := Module[{a}, a = Split[RealDigits[Pi - 3, 10, n] > [[1]]]; Part[Accumulate[Length /@ a], Flatten[Position[a, Table[m, > {r}]]] - 1] + 1] > > n is the digits of Pi, after 3, where to search a sequence of m digit > r times consecutives. > For instance: > > piesimo[10^7, 9, 7] > > Gives that the sequence 9999999 happens in positions: > > {1722776, 3389380, 4313727, 5466169} > > I know that in this group I will find faster methods. Any idea? > > Guillermo What about piesimoR[n_, m_String] := First /@ StringPosition[StringDrop[ToString[N[Pi, n]], 2], m] piesimoR[10^7, "9999999"]//Timing {4.04938, {1722776, 3389380, 4313727, 5466169}} The original gave piesimo[10^7, 9, 7] {9.56055, {1722776, 3389380, 4313727, 5466169}} If you intend to search several sequences it's better to save the stringfied pi pistring = StringDrop[ToString[N[Pi, 10^7]], 2]; piesimoS[m_String] := First /@ StringPosition[pistring, m] piesimoS["9999999"]//Timing {0.203969, {1722776, 3389380, 4313727, 5466169}} piesimoS["1234567"]//Timing {0.203969, {9470344}} Rafael