Wie kann ich bei einer Liste mit n verschiedenen Elementen durch jede Permutation der Elemente gehen und jeweils nur ein Wertepaar austauschen? (Ich nehme an, dass es möglich ist, es fühlt sich auf jeden Fall so an, als ob es möglich sein sollte).
Was ich suche, ist ein Iterator, der die Indizes des nächsten Paares von Elementen zu tauschen, so dass, wenn iterated n!-1 mal wird es Schritt durch die n! Wenn die Liste durch eine weitere Iteration wieder in die Ausgangsreihenfolge gebracht werden könnte, wäre das ein Bonus, ist aber keine Voraussetzung. Wenn alle Paare das erste (bzw. das letzte) Element als eines des Paares enthalten, so dass die Funktion nur einen einzigen Wert zurückgeben muss, wäre das ebenfalls ein Bonus.
Beispiel: Bei 3 Elementen kann man das letzte Element abwechselnd mit dem ersten und zweiten Element vertauschen, um eine Schleife durch die Permutationen zu bilden, d.h.: (a b c) tauschen 0-2 => (c b a) 1-2 (c a b) 0-2 (b a c) 1-2 (b c a) 0-2 (a c b).
Ich werde in C implementieren, kann aber wahrscheinlich Lösungen in den meisten Sprachen finden.