Knobeleien, Logeleien und  mathematische Probleme
-------------------------------------------------
Permut.sln 	Solution-Datei fr Visual Studio 2008
Permut.cpp 	CPP-Source (eigentlich pures C[99])
Permut.txt 	das hier
annaberta.py 	ein Python-Skript zum gleichen Thema

Permut ist eine kleine Sammlung von Routinen zur Generierung von Permutationen, Kombinationen und Variationen.
Sie beruhen weitgehend auf Algorithmen, die Donald E. Knuth in den Fascicles 2 und 3 des Volume 4 "The Art of Computer Programming" verffentlicht hat. Ausgewhlt wurden Algorithmen ohne Rekursion, die sich ganz bequem mit getnext() in eigene Programme einbinden lassen und die man auch gut zwischenspeichern kann (checkpoints).      

Die Algorithmen werden am Beispiel der beiden Logeleien aus dem Artikel "erprobt". Mit den Permutationen wird die Altersreihenfolge
nach den vorgegebenen logischen Bedingungen (visit1() ermittelt. Fr die zustzliche arithmetische Bedingung braucht man einen Algorithmus, der sich "Variation ohne Zurcklegen" nennt. Das kann man erreichen, wenn man zunchst eine Auswahl (hier 5 aus 6) vornimmt (Kombination) und danach die Auswahl durchpermutiert. Hierfr bietet permut.cpp insgesamt vier verschiedene Algorithmen. 

Wie elegant und kurz das auch aussehen kann, zeigt zudem die Lsung in Python, wo man inzwischen auf fertige Bibliotheksfunktionen fr alle Kombinationen aus einem Bereich per permutations(range(von, bis), Anzahl) zugreifen kann. Fr C++ gibt es in der STL bislang nur die einfache Permutation, aber noch keine Kombinationen und Variationen (ist aber in der Boost-Bibliothek definiert).           


