I'm new to Python and have been putting my mind to learning it over my

holiday break. I've been looking over the functional programming

aspects of Python and I'm stuck trying to come up with some concise

code to find Taxicab numbers (http://mathworld.wolfram.com/

TaxicabNumber.html).

"Taxicab(n), is defined as the smallest number that can be expressed

as a sum of two positive cubes in n distinct ways"

In Haskell something like this could easily be done with:

cube x = x * x * x

taxicab n = [(cube a + cube b, (a, b), (c, d))

| a <- [1..n],

b <- [(a+1)..n],

c <- [(a+1)..n],

d <- [(c+1)..n],

(cube a + cube b) == (cube c + cube d)]

Output::

*Maintaxicab 10

[]

*Maintaxicab 12

[(1729,(1,12),(9,10))]

*Maintaxicab 20

[(1729,(1,12),(9,10)),(4104,(2,16),(9,15))]

I'm looking for a succinct way of doing this in Python. I've been

toying around with filter(),map(), and reduce() but haven't gotten

anything half-way decent yet.

So, how would you implement this taxicab(n) function in Python?

Thanks in advance :-)