Welcome, guest | Sign In | My Account | Store | Cart
def permIter(seq):
   
"""Given some sequence 'seq', returns an iterator that gives
    all permutations of that sequence."""

   
## Base case
   
if len(seq) == 1:
       
yield(seq[0])
       
raise StopIteration

   
## Inductive case
   
for i in range(len(seq)):
        element_slice
= seq[i:i+1]
        rest_iter
= permIter(seq[:i] + seq[i+1:])
       
for rest in rest_iter:
           
yield(element_slice + rest)
   
raise StopIteration

History