Il existe des programmes sophistiqués trouvant en quelques dixièmes de secondes toutes les solutions (voir références). Nous allons ici nous contenter d'une méthode naïve et peu efficace: il s'agira de rechercher aléatoirement des solutions et de ne garder que celle qui se rapproche le plus du résultat demandé.
Algorithme (pour 1 essai)
Données: six nombres dans une liste L et le résultat r à approcher.
On répétera cet algorithme des milliers de fois et on n'affichera que la meilleure solution trouvée.
Une solution exacte a été trouvée après 492 essais:
25*7=175
6+2=8
175+10=185
185*4=740
740-8=732
|
Programmez l'algorithme décrit ci-dessus dans Mathematica. Écrivez tout d'abord un module qui effectuera, sur deux nombres donnés, une opération arithmétique valide choisie au hasard.
Fonctions Mathematica utiles: Abs, AppendTo, Delete, FromCharacterCode, If, Length, Module, Print, Random, StringJoin, ToString, Which, While. |
| Le fichier Mathematica complet est disponible, mais seulement pour les visiteurs autorisés! |