parmentelat / moocpython

16 stars 7 forks source link

mastermind #12

Open PapiSido opened 6 years ago

PapiSido commented 6 years ago

Ma version en ligne: mastermind.py fonctionne en mode codeur et en mode solveur [ encodeur() et decodeur() ], mais le mode solveur semble parfois se tromper et déclarer "impossible" ce qui ne l'est pas, mais l'algorithme de résolution implique une (petite) part d'aléatoire, donc non reproductible ( le bug non reproductible, ... le cauchemar!!) donc mastermind.3.py rendu déterministe, mais celui-là, je n'ai pas réussi à le faire bugger

Un grand merci à qui y parviendra, il suffit que vous me donniez le code choisi, je devrais pouvoir reproduire

Pour l'instant mon python est brut de décoffrage, mais je dois le reprendre assez fondamentalement pour séparer le codage ( utilisateur ou ordinateur ) du décodage (utilisateur ou ordinateur), un peu comme je l'avais fait pour puissance4. Ensuite je m'attaquerai à un interfaçage plus convivial, l'occasion de démarrer tkinter.

parmentelat commented 6 years ago

ce n'est pas très clair pour moi, en première lecture j'avais compris que la version aléatoire ne marchait pas, mais que la version déterministe marchait; mais en relisant j'ai un doute: vous êtes certain que la version déterministe a un bug ou bien c'est une conjecture ?

parmentelat commented 6 years ago

je rephrase maintenant que j'ai lu le code: pourquoi avez-vous choisi la valeur 25 pour idx0 dans la version déterministe ? est-il possible que le bug ne se produise que avec d'autres valeurs de idx0 ?

parmentelat commented 6 years ago

Comme c'est tout de même un peu hermétique sans commentaire du tout, ce que je peux vous proposer ça serait pour commencer d'unifier les deux fichiers en ajoutant des options sur la ligne de commande; pour

PapiSido commented 6 years ago

Merci beaucoup Thierry, Une nouvelle version mise en ligne, plus convaincante ( au moins pour moi) C'est maintenant la méthode partie( self, coder= 0 ou 1, solver = 0 ou 1 ) qui pilote la partie. programme toujours non commenté, mais documenté (docstring) pour l'utilisateur, si pas assez clair me le dire Le bug n'est toujours pas réapparu, donc traité par le mépris( je n'avais pourtant rien fumé d'illicite) , et de toute façon je devrais pouvoir le reconstituer en mode aléatoire à partir du moment où je connais la suite des coups joués, donc on oublie la version "déterministe" Pour le fichier journal, ma stratégie habituelle est plutôt de lui donner toujours le même nom et de le renommer ou d'en sauvegarder tout ou partie lorsque cela me semble utile Pour la ligne de commande, je vais approfondir la question pour apprendre à faire, mais en l’occurrence je compte aussi passer par tkinter en vue d'un interface plus convivial
Merci en tout cas de consacrer du temps à nos balbutiements

parmentelat commented 6 years ago

désolé car j'ai continué sur ma branche sans voir qu'il y avait du nouveau
donc dans la branche 'mastermind-thierry' j'ai fait ce dont je parlais, unifier les deux versions en une seule avec une ligne de commande qui permet de choisir le contexte du jeu j'ai dans cette version implémenté l'option qui permet de choisir son journal (mettre - pour stdout)

ça n'est sans doute pas utile de reporter ça dans la branche master, surtout si l'étape suivante c'est tkinter, mais au moins jette un coup d'oeil, c'est très pratique je conseille de prendre l'habitude d'utiliser ça très tôt dans le développement..

PapiSido commented 6 years ago

Merci, je vais décrypter et adapter à la nouvelle version En fait je n'ai pas l'habitude de passer les paramètres par ligne de commande. Une bonne occasion d'essayer de s'y mettre

parmentelat commented 6 years ago

On 29 Jan 2018, at 19:09, PapiSido notifications@github.com wrote:

Merci, je vais décrypter et adapter à la nouvelle version En fait je n'ai pas l'habitude de passer les paramètres par ligne de commande. Une bonne occasion d'essayer de s'y mettre

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

oui je le recommande car ça évite de passer son temps à bidouiller des variantes directement dans les sources, car à la fin on ne sait jamais où on en est exactement :)

PapiSido commented 6 years ago

C'est fait, j'ai modifié un peu le libellé des options, mais l'essentiel y est. Merci, j'utiliserai davantage à l'avenir, mais sans ton implémentation, j'aurais eu du mal à décrypter seul la doc La richesse de python est impressionnante, même parfois un peu effrayante lorsque l'on pense à tous les modules dont, malgré la profondeur du MOOC, nous n'avons je pense qu'effleuré la surface.

PapiSido commented 6 years ago

Terminé, tout semble fonctionner. Je reviendrai plus tard avec gui et graphique, mais je vais attaquer tkinter sur un autre projet