Bonjour,
Je cherche à programmer une fonction qui prenne en argument 2 ensembles, l'un étant des nombres (réels), l'autre des opérations (supposées binaires pour l'instant, par exemple +.,-.,*.), et qui rende l'ensemble des résultats différents qui peuvent être construits en utilisant une et une seule fois chaque nombre (dans l'ordre que l'on veut), et les opérations autant de fois que l'on veut.
Pour ce faire, je me suis dit qu'un algorithme de base était de lister toutes les possibilités, pour ensuite les évaluer, enlever tous les doublons, bref, travailler sur l'ensemble trouvé. Appelons liste_des_arbres la fonction qui prend en argument l'ensemble E des scalaires et l'ensemble F des lois de compositions internes, et qui rend la liste de toutes les formules qu'il est possible de faire, avec les contraintes énoncées plus haut.
La représentation que j'ai choisi pour les formules est celle d'arbre binaire (les noeuds seront les lois de composition, et les feuilles seront les scalaires).
La première étape est donc de lister toutes les possibilités.
(Remarque : j'avais déjà posé cette question il y a quelque temps, mais mon algorithme et ma programmation étaient incorrects, je préfère donc tout reprendre depuis le début, et suis ouvert à toute idée).
Il y a encore une autre contrainte, mais on pourra y réfléchir plus tard (faisons le peu à peu, sinon ça risque de devenir compliqué) : on a le droit de passer par des réels, mais le résultat final doit être entier.
Merci de m'aider à faire liste_des_arbres, dans un premier temps.
Partager