Ensemble des permutations des éléments donnés
y = perms(x) y = perms(x, "unique")
Vecteur ligne ou colonne de tout type de données pour lesquelles les opérateurs size(), ==, et [] sont définis, incluant le type cell.
indicateur texte optionnel, pour calculer et produire uniquement les
permutations uniques, sans aucun doublon.
Cette option est utilisable uniquement si x
est ordonnable :
booléen, entier, réel, ou texte.
Tableau du type de x, avec n=size(x,"*") colonnes.
Chaque ligne contient une permutation. Sans utiliser l'option "unique",
y
comprend n! lignes. Sinon, le nombre de lignes
size(y,1) ≤ n! dépend de la multiplicité des valeurs dédoublonnées de x.
Etant donné un vecteur x
de n
éléments,
perms(..)
calcule le nombre attendu de permutations attendues,
et vérifie qu'il y a suffisamment de mémoire vive disponible pour les calculer et les
stocker en résultat.
S'il n'y a pas suffisamment de mémoire vive, aucun calcul effectif n'est effectué, et une erreur est générée.
Sinon, les permutations sont calculées et retournées en résultat.
![]() | Lorsque "unique" est utilisé,
x est conservé, et l'ordre
des permutations dans y en tient compte. Ainsi x
pourra si besoin être trié selon l'ordre choisi par l'utilisateur,
avant d'appeler perms() . |
![]() | Pour mémoire, le poids n*n!*8 de y en octets
est listé ci-dessous en fonction du nombre n d'éléments de
x , pour x nombres décimaux, et sans
l'option "unique" : |
n | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
y [octets] | 32 | 144 | 768 | 4800 | 34560 | 288240 | 2.58×106 | 26.1×106 | 290×106 | 3.51×109 | 46.0×109 | 648×109 |
x = [4, 7, 10]; y = perms(x) x = ["a" "b" "c" "d"]; y = perms(x)' c = {"bonjour", %pi, %t}; perms(c) | ![]() | ![]() |
--> x = [4, 7, 10]; --> y = perms(x) y = 10. 7. 4. 10. 4. 7. 7. 10. 4. 7. 4. 10. 4. 10. 7. 4. 7. 10. --> x = ["a" "b" "c" "d"]; --> perms(x)' ans = !d d d d d d c c c c c c b b b b b b a a a a a a ! !c c b b a a d d b b a a d d c c a a d d c c b b ! !b a c a c b b a d a d b c a d a d c c b d b d c ! !a b a c b c a b a d b d a c a d c d b c b d c d ! --> c = {"bonjour", %pi, %t}; --> perms(c) ans = [1x1 boolean ] [1x1 constant] [1x1 string ] [1x1 boolean ] [1x1 string ] [1x1 constant] [1x1 constant] [1x1 boolean ] [1x1 string ] [1x1 constant] [1x1 string ] [1x1 boolean ] [1x1 string ] [1x1 boolean ] [1x1 constant] [1x1 string ] [1x1 constant] [1x1 boolean ]
Avec des éléments de multiplicité > 1 (doublons ou plus) :
perms([1 0 0]) perms([1 0 0], "unique") perms([0 1 2 0], "unique")' p = perms([0 0 0 0 1 1 1 2 2 3], "unique"); size(p) | ![]() | ![]() |
--> perms([1 0 0]) ans = 0. 0. 1. 0. 1. 0. 0. 0. 1. 0. 1. 0. 1. 0. 0. 1. 0. 0. --> perms([1 0 0], "unique") ans = 0. 0. 1. 0. 1. 0. 1. 0. 0. --> perms([0 1 2 0], "unique")' ans = 0. 0. 0. 0. 0. 0. 1. 1. 1. 2. 2. 2. 0. 0. 1. 1. 2. 2. 0. 0. 2. 0. 0. 1. 1. 2. 0. 2. 0. 1. 0. 2. 0. 0. 1. 0. 2. 1. 2. 0. 1. 0. 2. 0. 0. 1. 0. 0. --> p = perms([0 0 0 0 1 1 1 2 2 3], "unique"); --> size(p) ans = 12600. 10. // au lieu de 10! = 3628800 lignes
Version | Description |
6.1.0 | Option "unique" ajoutée. |