$10K coding deathmatch
dbstovall at gmail.com
Fri Nov 3 23:32:38 MST 2006
On 11/3/06, Levi Pearson <levi at cold.org> wrote:
> On Nov 3, 2006, at 4:30 PM, Andrew McNabb wrote:
> > I'm a big fan of Python, but this example made me want to cry.
> > Grounds for first bullet:
> >> value = reduce(lambda x,y: 0 < abs(x-y) <= len(nums) and y or
> >> None, [int(item) for item in nums])
Well, I had a few reasons for doing this. I have read that map,
reduce, and list comprehesions are much faster and more efficient in
python because they are implemented in the underlying C code, but for
and while loops are not. I have been searching for the reference for
this but I can't find it. I also kind of wanted to show that python
can be just as confusing and ridiculous as some of the perl examples.
I basically was going for the best runtime, and smallest footprint as
possible. Were I coding this to be maintained it would have been
> > Grounds for second bullet:
> >> print '%smatch' % (not value and 'Not a ' or '')
This is bad I admit. I don't know why I coded it up this way at all.
I have no excuse, complete brain fart.
> The ugly part to me is where it relies on generating a type error to
> exit the reduce function upon failure. My Lisp version did roughly
> the same thing, but explicitly threw an exception instead of relying
> on a runtime type error.
I agree, but I wanted to use the anonymous function since, again, it
is supposed to be faster and more efficient. I could have defined my
own function that explicity raised an error and called it in the
reduce, but again, I wasn't trying to write maintainable code, just
something that would run as fast and efficiently as possible. For
this example though, it probably doesn't make any difference at all.
I swear Power Point is going to be the downfall of higher education in
More information about the PLUG