Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.soft-sys.math.mathematica > #3065 > unrolled thread

Re: Seaching in Pi a sequence. Looking for a faster method

Started byAnthony Hodsdon <ajhodsd@hotmail.com>
First post2011-06-11 07:58 +0000
Last post2011-06-11 07:58 +0000
Articles 1 — 1 participant

Back to article view | Back to comp.soft-sys.math.mathematica

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: Seaching in Pi a sequence. Looking for a faster method Anthony Hodsdon <ajhodsd@hotmail.com> - 2011-06-11 07:58 +0000

#3065 — Re: Seaching in Pi a sequence. Looking for a faster method

FromAnthony Hodsdon <ajhodsd@hotmail.com>
Date2011-06-11 07:58 +0000
SubjectRe: Seaching in Pi a sequence. Looking for a faster method
Message-ID<isv771$6c$1@smc.vnet.net>
This sounds like a job for string search:

piesimo2[n_, m_, r_] := 
 Transpose[
   StringPosition[StringDrop[ToString[N[Pi, n]], 2], 
    ToString[m*(10^r - 1)/9]]][[1]]

In[44]:= piesimo2[10^7, 9, 7] // Timing

Out[44]= {19.063, {1722776, 3389380, 4313727, 5466169}}

Not bad, considering "stringifying" pi to begin with seems to take most of
the time:

In[49]:= ToString[N[Pi, 10^7]]; // Timing

Out[49]= {18.19, Null}

Mathematica can do the actual search very quickly using a linear time (in
terms of n+r) algorithm (see, for instance,
http://en.wikipedia.org/wiki/String_searching_algorithm).

--Anthony

-----Original Message-----
From: Guillermo Sanchez [mailto:guillermo.sanchez@hotmail.com] 
Sent: Friday, June 10, 2011 3:38 AM
Subject: Seaching in Pi a sequence. Looking for a faster method

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



[toc] | [standalone]


Back to top | Article view | comp.soft-sys.math.mathematica


csiph-web