Haskell — Permutacions unicícliques

Feu una funció unicycles :: Int -> [[Int]] que, donat un nombre n > 0,
retorni totes les permutacions de [1..n] amb un cicle exactament.
Suposeu que el contingut de la posició i d’una permutació indica “la
següent posició que cal visitar”.

Per exemple, considereu la permutació (4, 3, 2, 5, 1, 7, 6). 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 1 → 4 → 5 → 1.
Els altres dos cicles són 2 → 3 → 2 i 6 → 7 → 6. La permutació (3, 2, 1)
té els dos cicles 1 → 3 → 1 i 2 → 2, mentre que la permutació
(3, 4, 5, 6, 7, 1, 2) només té el cicle 1 → 3 → 5 → 7 → 2 → 4 → 6 → 1.

Pista

Hi ha (n − 1)! permutacions unicícliques de n elements.

Observació

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.

Informació del problema

Autoria: Jordi Petit

Generació: 2026-02-03T17:07:07.333Z

© Jutge.org, 2006–2026.
https://jutge.org
