Bonjour,
je commence à me mettre à Python et j'ai un petit problème algorithmique dont je n'arrive pas à me défaire.
Je dois créer une fonction prenant une liste en argument et un certain nombre de trou possible, le résultat est une liste contenant toutes les listes faisable avec les trous.
Par exemple si la list = [1, 2, 3, 4, 5] et le nombre de trou = 1 le résultat est:
[[1, 2, 3, 4],
[1, 2, 3, 5],
[1, 2, 4, 5],
[1, 3, 4, 5],
[2, 3, 4, 5]]
si le nombre de trou est de 2 alors le résultat est:
[[1, 2, 3],
[1, 2, 4],
[1, 2, 5],
[1, 3, 4],
[1, 3, 5],
[1, 4, 5],
[2, 3, 4],
[2, 3, 5],
[2, 4, 5],
[3, 4, 5]]
J'ai réussi à faire une fonction qui marche de manière récursive mais elle est vraiment lente et contient des doublons que je dois retirer ensuite, ce qui gache encore plus les performances, et je ne vois pas comment le faire de manière itérative.
Ca me semble assez basique mais je n'ai pas trouvé de fonction déjà implémenté et optimisé (car je peux avoir des listes et un nombre de trous très grand).
Connaissez vous un module qui fasse cela ?
Partager