A permutation on permutations
phil hunt
philh at comuno.freeserve.co.uk
Sun Nov 25 19:06:34 EST 2001
On Sun, 25 Nov 2001 15:09:38 -0500, Arthur Siegel <ajs at ix.netcom.com> wrote:
>Phil writes -
>
>>Can you have the same number appearing twice, e.g. [1,2,3,3] ?
>
>Actually I hadn't considered double points for what I'm doing.
>But I believe that the universe of unique curves would
>include curves with double point args. I'll play with it and see
>if I can get a better criteria for unique curves.
>
>>>So am a looking for a function to return all
>>>permutations, excluding duplicates as defined above.
>
>>Consider the following source:
>
>>def perm(source, done=0, current=[]):
>> if done == len(source):
>> if current[0] < current[-1]: #removes reversals
>> print current
>> else:
>> for i in source:
>> if i not in current:
>> perm(source, done+1, current+[i])
>
>Works nice, but I haven't found a great way to get a return
>value. Using a global L=[] in the calling code and
>an L.append(current) at "print current" in the perm func.
That should do the job; or you could pass the list of all permutations
as a second parameter.
BTW, if you change the 1st if statment to
if len(current) == len(source):
you can get rid of the (done) variable.
--
*** Philip Hunt *** philh at comuno.freeserve.co.uk ***
More information about the Python-list
mailing list