Sujet : Re: [Jeux] Trouver le calcul caché
De : samuel.devulder (at) *nospam* laposte.net.invalid (Samuel DEVULDER)
Groupes : fr.sci.mathsDate : 23. Feb 2022, 09:14:38
Autres entêtes
Organisation : Nemoweb
Message-ID : <fjDQ33sZtLM_9AD084KYhzIv9d0@jntp>
References : 1 2 3 4 5 6 7 8 9 10
User-Agent : Nemo/0.999a
Le 22/02/2022 à 16:20, Jacques Mathon a écrit :
Je me propose de te le faire jouer justement pour éprouver ton code. Si tu en es d'accord j'attends ta première proposition pour un hard dont le résultat vaut 132.
Ou si tu préfères, tu pars de mon premier coup et de sa réponse.
5 4 * 7 / 3 + 6
⬜ 🟨 🟨 ⬜ 🟨 ⬜ 🟩 🟨
J’ai encode cela comme suit:
main :- find([
"0124689+-*/()", % tous les symboles non gris sont là "012689+-*/()", % orange -> ”4” retiré de la liste
"0124689+-/()", % orange -> ”5” retiré de la liste
"0124689+-*/()",
"0124689+-*()", % orange -> ”/” retiré "0124689+-*/()",
"+", % vert -> seul ”+” est possible
"012489+-*/()"
],132,Str), puts(Str), nl, fail.
A savoir qu’on part de la chaîne "0123456789+-*/()" partout qui contient tous les symboles possibles. Ensuite on retire tous les symboles correspondants aux cases grises. Elles sont interdite.
On place 8 copies de cette chaîne dans la liste passée à find, puis pour chaque case orange on retire le symbole de la chaîne. On ne garde aussi que le seul symbole des cases vertes.
On a ainsi encodé tout ce qu’on sait de la situation en ce point du jeu. Le code va alors construire plein de chaînes plausibles respectant ces contraintes et n’afficher que celles qui s’évaluent sans erreur à 132.
Si j’impose de ne pas avoir se doublons, il n’y a pas beaucoup de résultats (au bug près)
190-62+4
204-81+9
209-81+4
214-90+8
218-90+4
6/2*41+9
8*(16)+4
9*14-2+8
(16*8)+4
(16)*8+4
(8)*16+4
Cela s’obtiens en 10 secondes sur un smartphone.
Le code "as is" est là :
https://pastebin.com/hWGjaHnWEdit: je pense qu’il y a un bug car je ne vois pas les solutions basées sur la commutativité.
Edit2: ah ben non, les contraintes empêchent certaines commutations. Il n’y a peut être pas de bug tous comptes faits.
PS: avec les doublons il y a autour de 350 solutions cf.
https://pastebin.com/8yay2Gd2