ich hab mir in den Sinn gesetzt, alle Möglichkeiten auszugeben, wie man k Zahlen auf n Stellen verteilen kann. Dabei wäre mir die Reihenfolge wichtig, jedoch sollen keine Wiederholungen vorkommen. Dabei möchte ich k und n selbst variabel bestimmen können (für nen festen wert hab ichs mit entsprechend vielen schleifen gelöst)
Mein Ansatz, das ganze über Rekursionen zu basteln läuft auf den ersten Anschein gut durch, allerdings finden sich einige doppelte Kombinationen. Nun meine Frage: wie könnte man das besser lösen?
Code: Alles auswählen
import numpy
zahlen = set(range(0,3))
anzahl_stellen = 3
Reihenfolge = numpy.zeros(anzahl_stellen)
count = 0 # dient zur kontrolle (anzahl der Kombinationen kann man ja leicht über n! / (n-k)! ausrechnen)
def perm(zahlen, anzahl):
if len(zahlen) < anzahl:
print "Geht nicht..."
return 0
if anzahl-1 >=0:
for i in zahlen:
Reihenfolge[anzahl-1]=i
perm(zahlen, anzahl-1)
if len(set(Reihenfolge)) == anzahl_stellen: # sortiert Kombinationen aus, die Mehrfachnennungen von Zahlen beinhalten
global count
count += 1
print Reihenfolge
perm(zahlen, anzahl_stellen)
print count
Code: Alles auswählen
[ 2. 1. 0.]
[ 2. 1. 0.]
[ 1. 2. 0.]
[ 2. 0. 1.]
[ 2. 0. 1.]
[ 0. 2. 1.]
[ 1. 0. 2.]
[ 0. 1. 2.]
Bin momentan wieder etwas ratlos und für Ideen und Verbesserungsvorschläge aller Art aufgeschlossen.
Danke euch schonmal