Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.soft-sys.math.mathematica > #3082
| From | DrMajorBob <btreat1@austin.rr.com> |
|---|---|
| Newsgroups | comp.soft-sys.math.mathematica |
| Subject | Re: Seaching in Pi a sequence. Looking for a faster method |
| Date | 2011-06-12 09:07 +0000 |
| Organization | Steven M. Christensen and Associates, Inc and MathTensor, Inc. |
| Message-ID | <it1vkp$b7b$1@smc.vnet.net> (permalink) |
> searching for 9999998 didn't return correct results until I added the
> _Integer qualifier to the start and end rules.
That's because exactly two matches were found:
piStringSearch[n_, s_, c_] :=
StringPosition[ToString@N[Pi, n], ToString@s, c]
piStringSearch[10^7, "9999998", 100]
% /. {start_, end_} :> start - 2
{{764, 770}, {3062883, 3062889}}
{762, 768}
Do this instead:
piStringSearch[n_, s_, c_] := -2 +
StringPosition[ToString@N[Pi, n], ToString@s, c][[All, 1]]
piStringSearch[10^7, "9999998", 100]
{762, 3062881}
That still fails if NO matches are found, so this is safer than either
method above:
Clear[piStringSearch]
piStringSearch[n_, s_, c_] :=
Replace[StringPosition[ToString@N[Pi, n], ToString@s,
c], {start_, end_} :> start - 2, 1]
piStringSearch[10^7, "9999998", 100]
{762, 3062881}
piStringSearch[10^7, "9999999", 100]
{1722776, 3389380, 4313727, 5466169}
Table[piStringSearch[10^7, "000000" <> ToString@i, 100], {i, 0, 9}]
{{3794572}, {3794573}, {2609392,
7257528}, {}, {}, {1699927}, {}, {}, {2328783}, {}}
piStringSearch[10^7, "000000", 100]
{1699927, 2328783, 2609392, 3794572, 3794573, 7257528}
What is the "leading zeros problem"?
Bobby
On Sat, 11 Jun 2011 02:59:35 -0500, Phil J Taylor <xptaylor@gmail.com>
wrote:
> I made a couple of minor modifications after noticing problems with
> Feynman's Point and patterns that begin with zeros. I'm not sure why, but
> searching for 9999998 didn't return correct results until I added the
> _Integer qualifier to the start and end rules. I haven't fixed the
> leading
> zeros problem. Just put the pattern in quotes.
>
> (* loosely validated at http://www.angio.net/pi/bigpi.cgi *)
>
> piStringSearch[n_, s_, c_] :=
> Module[{piString = ToString[N[Pi, n]]},
> StringPosition[piString, ToString[s],
> c] /. {start_Integer, end_Integer} :> start - 2]
>
> piStringSearch[10^5, "00000", 100]
>
> {17534}
>
> On Fri, Jun 10, 2011 at 2:45 PM, Phil J Taylor <xptaylor@gmail.com>
> wrote:
>
>> This works well for me ... it's about 3x faster than piesimo on my
>> machine
>> and I can search for any sequence.
>> The final argument c is the number of matches that you are interested in
>> seeing.
>>
>> piStringSearch[n_, s_, c_] :=
>> Module[{a}, a = ToString[N[Pi, n]];
>> StringPosition[a, ToString[s], c] /. {start_, end_} :> start - 2]
>>
>> piStringSearch[10^7, 9999999, 100]
>>
>> {1722776, 3389380, 4313727, 5466169}
>>
>> On Fri, Jun 10, 2011 at 6:38 AM, Guillermo Sanchez <
>> guillermo.sanchez@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
>>>
>>>
>>>
>>
--
DrMajorBob@yahoo.com
Back to comp.soft-sys.math.mathematica | Previous | Next | Find similar | Unroll thread
Re: Seaching in Pi a sequence. Looking for a faster method DrMajorBob <btreat1@austin.rr.com> - 2011-06-12 09:07 +0000
csiph-web