$10K coding deathmatch

Dan Stovall 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
completely different.

> > 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.


Dan

-- 
I swear Power Point is going to be the downfall of higher education in
western society.



More information about the PLUG mailing list