Feu una funció unicycles :: Int -> [[Int]] que, donat
un nombre
,
retorni totes les permutacions de
amb un cicle exactament. Suposeu que el contingut de la posició
d’una permutació indica “la següent posició que cal visitar”.
Per exemple, considereu la permutació . A la posició 1 hi ha un 4, a la posició 4 hi ha un 5, i a la posició 5 hi ha un 1. Així doncs, un dels cicles d’aquesta permutació és . Els altres dos cicles són i . La permutació té els dos cicles i , mentre que la permutació només té el cicle .
Hi ha permutacions unicícliques de elements.
Per tal que no importi l’ordre en que genereu la solució, els jocs de
proves ordenen el resultat. Per a això, importeu la funció
sort del mòdul Data.List encara que no la feu
servir.
Input
sort $ unicycles 3 sort $ unicycles 4
Output
[[2,3,1],[3,1,2]] [[2,3,4,1],[2,4,1,3],[3,1,4,2],[3,4,2,1],[4,1,2,3],[4,3,1,2]]