perms
Génère le tableau des permutations des éléments donnés
Séquence d'appel
y = perms(x) y = perms(x, "unique")
Arguments
- x
Vecteur ligne ou colonne de tout type de données pour lesquelles les opérateurs size(), ==, et [] sont définis, incluant le type cell.
- "unique"
indicateur texte optionnel, pour calculer et produire uniquement les permutations uniques, sans aucun doublon. Cette option est utilisable uniquement si
xest ordonnable : booléen, entier, réel, ou texte.- y
Tableau du type de x, avec n=size(x,"*") colonnes. Chaque ligne contient une permutation. Sans utiliser l'option "unique",
ycomprend n! lignes. Sinon, le nombre de lignes size(y,1) ≤ n! dépend de la multiplicité des valeurs dédoublonnées de x.
Description
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 |
Exemples
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
Voir aussi
- grand(n,'prm',x) — Générateur de nombres pseudo-aléatoires
- factorial — factorial function : product of the n first positive integers
- unique — extrait (et trie) les éléments distincts d'un vecteur, matrice, hypermatrice
- gsort — sorts boolean, numerical and string arrays
- try — mot clé de début du bloc try dans une instruction de contrôle try-catch
Historique
| Version | Description |
| 6.1.0 | Option "unique" ajoutée. |
| Report an issue | ||
| << ones | Matrice - génération | repmat >> |

