Sujet : Re: [Jeux] Trouver le calcul caché
De : samuel.devulder (at) *nospam* laposte.net.invalid (Samuel DEVULDER)
Groupes : fr.sci.mathsDate : 23. Feb 2022, 02:38:11
Autres entêtes
Organisation : Nemoweb
Message-ID : <XdfGFVBTuIjr2dOfD-NfgcMln3Y@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
"012689+-*/()", % orange -> 4 retiré de la liste
"0124689+-/()", % orange -> 5 retiré de la liste
"0124689+-*/()",
"0124689+-*()", % orange -> / retiré "0124689+-*/()",
"+", % vert -> seul + reste
"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 la 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.
Le code va alors construire plein de chaînes plausible respectant ces contraintes et valant 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é.