Dear list

I was really impressed by this version of quicksort:-
def qsort (t):
if len (t) == 0:
return []
else:
return qsort([x for x in t[1:] if x <= t[0]]) + [t[0]] + qsort([x for x in t[1:] if x > t[0]])


I'm trying to produce something of a similar structure to generate the permutations of a sequence by translating the ffg bit of Haskell:-
perms [] = [[]]
perms xs = [ x : ps | x <- xs , ps <- perms ( xs\\[x]) ]


'\\' applies to lists & means elements of the first list excluding any elements in common with the second list.

The best I've been able to do is pretty obvious:-
def perms (t):
if len (t) == 0:
return []
else:
return [[x] + perms ([y for y in t if y <> x]) for x in t]
Needless to say, it doesn't work. It does produce a list of lists but they are so horribly nested that I've no idea whether I am getting close. I've also tried adding and removing square brackets in various combinations.


Any ideas?

Logesh

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to