Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

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


  • Prev by Date: Re: Is there ToNumber?
  • Next by Date: Re: mathematica 8 and psfrag
  • Previous by thread: Re: Seaching in Pi a sequence. Looking for a faster method
  • Next by thread: Re: Seaching in Pi a sequence. Looking for a faster method