Je travaille sur une fonction aux permutations pour toutes les valeurs d'une liste.Permutations ML standard
Voici ce que j'ai jusqu'à présent:
//MY ROTATE FUNCTION
fun rotate e [] = [[e]]
| rotate e (x::xs)= (e::x::xs)::(List.map (fn l => x::l) (rotate e xs));
//MY CURRENT PERMUTATION FUNCTION
fun perm [] = []
| perm (x::xs) = List.concat(List.map (fn l => (rotate x xs)) xs) @ perm xs;
SORTIE:
- perm [1,2,3];
val it = [[1,2,3],[2,1,3],[2,3,1],[1,2,3],[2,1,3],[2,3,1],[2,3],[3,2]]
La sortie doit être quelque chose comme [[1, 2, 3], [1, 3, 2] , [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]. Comme vous pouvez le voir, il me manque quelque chose ici. Je crois que le problème est mon 3 n'est pas passé à tourner comme rotation 3 [1,2] est ce qui me manque de mon code avec deux listes de 2 éléments étant ici pour une raison quelconque.
Comment puis-je corriger ma fonction perm pour afficher la sortie correctement? Toute aide, quelle que soit sa taille, m'aiderait beaucoup.
Merci, je vais jeter un oeil à cela. – user494948