A friendly challenge: Generalized Partition
- To: mathgroup at smc.vnet.net
- Subject: [mg34858] A friendly challenge: Generalized Partition
- From: gleam at flashmail.com ("Mr. Wizard")
- Date: Tue, 11 Jun 2002 05:00:21 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
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