Services & Resources / Wolfram Forums
MathGroup Archive
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2002

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

Search the Archive

Re: A friendly challenge: Generalized Partition

  • To: mathgroup at
  • Subject: [mg34905] Re: [mg34858] A friendly challenge: Generalized Partition
  • From: Andrzej Kozlowski <andrzej at>
  • Date: Wed, 12 Jun 2002 02:15:41 -0400 (EDT)
  • Sender: owner-wri-mathgroup at

Here is my first (and only) attempt, which probably does not quite match 
yours but comes close enough (considering the amount of time I can spare 
for this).

kk[ls_, t_] :=
   With[{w = FoldList[Plus, 0, t]},
     Map[Take[ls, #] &, Transpose[{Drop[w, -1] + 1, Rest[w]}]]]

Tests on my 400 mghz PowerBook G4:

a = Range[2000];

b = Table[Random[Integer, {1, 20}], {150}];

First[Timing[Do[gg[a, b], {100}]]]

6.24 Second

First[Timing[Do[kk[a, b], {100}]]]

0.35 Second

Since gg was somewhat faster than on your machine I assume that my kk is 
slower than your function.


On Tuesday, June 11, 2002, at 06:00  PM, Mr. Wizard wrote:

> In the 4.1 help browser, in Further Examples under Take, there is code
> for a generalized partition function, called gg.  This code is
> somewhat long and extremely slow.  I challenge you to duplicate the
> functionality of this code (ignoring the ggCheckArgs condition), while
> making it 1) as sort as possible, and/or 2) as fast as possible.
> Your function must be in good form, leaving no stray assignments, i.e.
> using the appropriate scoping construct(s).
> For efficiency testing, I will use (where func is your function):
> a = Range[2000];
> b = Table[Random[Integer, {1, 20}], {150}];
> First[Timing[Do[func[a, b], {100}]]]
> I will post my versions after a little while.  For reference, on my
> machine, the function from the help files, omitting the ggCheckArgs
> condition, takes 8 seconds; my fastest version takes 0.33 seconds.  My
> shortest version is 44 characters in length, and takes 0.94 seconds.
> Good luck!
> Paul
Andrzej Kozlowski
Toyama International University

  • Prev by Date: Integrate using UnitStep[*]
  • Next by Date: RE: Re: PlotVectorField
  • Previous by thread: Re: A friendly challenge: Generalized Partition
  • Next by thread: Re: A friendly challenge: Generalized Partition