MathGroup Archive 2002

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

Search the Archive

RE: Re: Pattern Matching in Lists

  • To: mathgroup at smc.vnet.net
  • Subject: [mg35610] RE: [mg35590] Re: Pattern Matching in Lists
  • From: "DrBob" <majort at cox-internet.com>
  • Date: Mon, 22 Jul 2002 02:11:14 -0400 (EDT)
  • Reply-to: <drbob at bigfoot.com>
  • Sender: owner-wri-mathgroup at wolfram.com

Wow, Carl!  That's about three times as fast as Selwyn's code!

Needs["Statistics`HypothesisTests`"]
f1[w_]:=Count[Partition[w, 2,1],{1,0}]
f2[w_]:=Count[Drop[w,-1] - Drop[w,1],1]
f3[w_]:=Count[Drop[w+2RotateRight[w],1],2]
f4[w_]:=Tr[Drop[w,-1](Drop[w,-1]-Drop[w,1])]
trial:=(n=2000000;w = Table[Random[Integer], {n}];
    First@Timing[#[w];]/Second&/@{f3,f4}
    )

{t1,t2}=Transpose[trial&/@Range[30]];
Mean/@{t1,t2}
r=MeanTest[t1-t2,0,FullReport\[Rule]True]
meanDiff=(FullReport/.r)[[1,1,1]];
Print["% difference = ",meanDiff/Mean[t1]]

{0.560933, 0.2105}

{FullReport -> TableForm[
    {{"Mean", "TestStat", 
      "Distribution"}, 
     {0.35043333333333826, 
      44.64543969496886, 
      StudentTDistribution[29]}}, 
    TableHeadings -> {None, 
      {"Mean", "TestStat", 
       "Distribution"}}], 
  OneSidedPValue -> 
   1.377763589983338*^-28}

% difference = 0.6247325885429081

That's 62% less time spent, with a p-value of about 10^-28.

Bobby

-----Original Message-----
From: Carl K. Woll [mailto:carlw at u.washington.edu] 
To: mathgroup at smc.vnet.net
Subject: [mg35610] [mg35590] Re: Pattern Matching in Lists

Anthony and newsgroup,

I thought of another method of  solving this problem which is 5 or 6
times
faster than my previous version. Here is a test case.

tst=Table[Random[Integer],{1000000}];

My first solution was

In[16]:=
Count[Partition[tst,2,1],{1,0}]//Timing
Out[16]=
{0.704 Second, 249722}

My second solution is

In[17]:=
Tr[Drop[tst,-1](Drop[tst,-1]-Drop[tst,1])]//Timing
Out[17]=
{0.125 Second, 249722}

Carl Woll
Physics Dept
U of Washington

"Anthony Mendes" <amendes at zeno.ucsd.edu> wrote in message
news:ah5qce$59o$1 at smc.vnet.net...
>Hello,
>
> Suppose w={1,1,1,0,0,1,0,1,0,0,1,0,0}.
>
> How can I count the number of occurrences of a 1 in w immediately
> followed by a 0 in w?
>
> I have tried every incarnation of Count[] I can think of; for example,
>
> Count[w,{___,1,0,___}]
>
> does not seem to work.  In general, how can I count the number of
> occurrences of a 1 followed by a 0 in a list of 1's and 0's?  Thank
you!
>
>
> --
> Tony
> _____________________
> amendes at math.ucsd.edu
>
>
>
> 







  • Prev by Date: Re: Pattern Matching in Lists
  • Next by Date: Re: Pattern Matching in Lists
  • Previous by thread: Re: Pattern Matching in Lists
  • Next by thread: Re: Pattern Matching in Lists