Permutationen
Das folgenden Python Programm erzeugt nacheinander alle Permutationen einer gegebenen Liste. Es wird dabei einfacher Ansatz umgesetzt, bei dem zuerst eine Zahl, für die erste Position ausgewählt wird, danach von den verbleibenden eine für die Zweite usw.
#!/usr/bin/env python
########################################################################
# Copyright (c) 2006 by Bernd Breitenbach. All Rights Reserved
########################################################################
# perm.py
# Author: Bernd Breitenbach
#-
# History:
# bb - Apr 8, 2006: Created.
########################################################################
class Permutations:
EMPTY=object()
def __init__(self,sequence):
self.sequence=sequence
self.orig=list(sequence)
self.build=[None]*len(self.sequence)
self.level=0
def calc(self):
if self.level==len(self.orig):
yield self.build
else:
for i in range(len(self.orig)):
e=self.orig[i]
if e==self.EMPTY: continue
self.build[self.level]=e
self.orig[i]=self.EMPTY
self.level+=1
for p in self.calc():
yield p
self.level-=1
self.orig[i]=e
self.build[self.level]=self.EMPTY
if __name__ == '__main__':
for p in Permutations("BERND").calc():
print p