Salut. Imaginons que tu saches construire une telle liste de tableau pour N items :
[
{A, B, C},
{B, C, A},
...
]
Pour construire une liste similaire pour N+1 items, il suffit, pour chaque tableau de ta liste (dans l'exemple, pour chaque ligne), d'insérer le N+1-ième item à chaque emplacement possible :
[
{D, A, B, C},{A, D, B, C},{A, B, D, C},{A, B, C, D},
{D, B, C, A},{B, D, C, A},{B, C, D, A},{B, C, A, D},
...
]
Ainsi, du fait que tu n'as qu'un faible nombre d'items, je propose une solution récursive :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| fonction arrangements(l : liste d'item)
Si taille de l = 1 Alors
retourner l
Sinon
Soient tete : item et queue : liste d'item telles que tete+queue=l
Soit resultat : liste de (liste d'item)
l' = arrangements(queue)
Pour chaque liste arrangement de l'
Pour chaque item i de arrangement
Ajouter la liste arrangement[0..i-1]+tete+arrangement[i..fin] à resultat
Fin Pour
Fin Pour
retourner resultat
Fin Si |
Partager