2016-10-20 1 views
2

Verben C. A. bezieht sich auf Permutationen.
Und sie haben sehr komplizierte Dokumentation.
Ich möchte nur alle möglichen Permutationen erhalten (n!)
Zum Beispiel für Elemente 1 2 3Liste aller Permutationen

1 2 3 
1 3 2 
2 1 3 
2 3 1 
3 1 2 
3 2 1 
+0

Etwas einfacher als das: (i. @! @ # A.)) '123' – Roman

Antwort

1

Links Argument von A. ist eine Liste der Permutation Indizes.

Rechtes Argument von A. ist die Liste permutiert werden.

Die erste (unpermittierte) Liste hat den Index 0 und es geht von dort lexikographisch [*] weiter.

Egs:

(0) A. 'a';'b';'c' 
┌─┬─┬─┐ 
│a│b│c│ 
└─┴─┴─┘ 

(1 0) A. 1 2 3 
1 3 2 
1 2 3 

(0 1 2) A. 5 1 2 
5 1 2 
5 2 1 
1 5 2 

Um alle Permutationen einer Liste, die Sie anfordern alle (! #y) (Fakultät Anzahl von Elementen der Liste y permutiert werden) von ihnen, durch alle Indices 0 ... (n-1) anfordernden: i. (! # y) :

(i.!#y) A. y 

[*]: lexikografisch der impliziten Liste i. # y. Das heißt, A. permutiert immer die einfache Liste 0 ... n und wendet diese Permutation dann auf Ihre ursprüngliche Liste an: permutation { initial_list.

Verwandte Themen