flotpython / recreation

Zone récréative pour les étudiants du MOOC Python3
10 stars 7 forks source link

let's bridge #7

Open parmentelat opened 5 years ago

parmentelat commented 5 years ago

Merci à hquatreville qui a commencé un projet sur le bridge

J'ai fait une rapide revue de code pour vous suggérer diverses améliorations; Regardez la branche 'comments-hquatreville’

Bon c’est très rapide comme travail de ma part, je voulais juste vous suggérer quelques pistes, il y a sûrement à prendre et à laisser..

hquatreville commented 5 years ago

Merci,

J'ai pris connaissance des modifications.

maintenant, si j'essaie de modifier le fichier ainsi modifé, j'ai un message d'erreur m'indiquant que je dois choisir une branche.

Si je clique sur Fork, en haut, à doite de l'écran, je me retrouve perdu au milieu du labyrinthe, bref, ce n'est sans doute pas la bonne idée.

JiPiBi commented 5 years ago

@hquatreville J'ai ouvert un fichier echange.md pour mettre mes remarques

JiPiBi commented 5 years ago

@hquatreville
J'ai mis à jour le fichier echange

JiPiBi commented 5 years ago

@hquatreville Nouvelle mise à jour de echange après test version du 28

hquatreville commented 5 years ago

Vraiment un grand Merci à toi JiPiBi pour ces tests extremenent fructueux. je vais regarder de près cette histoire de points.

J'ai promis à mon partenaire que le truc serait près pour Noël ...

JiPiBi commented 5 years ago

Ok. Pour ce qui concerne la suite: comme les pbs IHM sont bien avancés. Ne pourriez vous lancer des batteries de tests avec des filtres et séquences qui testent si des donnes sont possibles mais sans passer par l'interface donc uniquement en code .sinon le cadeau de Noël ne sera pas sous le sapin.;-)

Envoyé depuis mon smartphone Samsung Galaxy.

-------- Message d'origine -------- De : hquatreville notifications@github.com Date : 29/11/2018 09:37 (GMT+01:00) À : flotpython/recreation recreation@noreply.github.com Cc : JiPiBi jpbozo@hotmail.fr, Comment comment@noreply.github.com Objet : Re: [flotpython/recreation] let's bridge (#7)

Vraiment un grand Merci à toi JiPiBi pour ces tests extremenent fructueux. je vais regarder de près cette histoire de points.

J'ai promis à mon partenaire que le truc serait près pour Noël ...

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/flotpython/recreation/issues/7#issuecomment-442749846, or mute the threadhttps://github.com/notifications/unsubscribe-auth/Aq4mzq005ndDxHxrq-IPFVm9H0c8PdY7ks5uz5y6gaJpZM4YWMgG.

hquatreville commented 5 years ago

Les grands esprits se rencontrent. C'est effectivement ce que j'envisage. Mais avant, je vais vérifier que le problème est correctement identifié.

JiPiBi commented 5 years ago

Par rapport à votre dernier constat dans echange, de mon côté j obtenais le message filtres incompatibles avec des demandes de donnes de 1 ou 3 donc pas très exigeantes. D autre part pourquoi le message filtres incompatibles sort il dans cette circonstance? Comment verifiez vous la compatibilité des differents filtres, ce qui devrait être un préalable à la recherche des donnes compatibles?

Envoyé depuis mon smartphone Samsung Galaxy.

JiPiBi commented 5 years ago

Encore une serie de questions : je ne comprends pas bien le comportement des filtres négatifs faut il les considérer comme des filtres maxi?

Comme ca ne me semble pas facile à interpréter surtout en n ayant pas tous les filtres en regard, est ce qu' il ne serait pas plus clair , pas forcement plus facile, de définir sur le même interface des valeurs mini maxi des points et des nombre de cartes par couleur pour chaque joueur ?

Même type de question: est ce que l addition de filtres avec des et des ou est vraiment gérable deja sur un joueur puisque visuellement ce n'est deja pas aisé de voir ce que donne l intersection de tous les filtres. D ou la proposition précédente renforcee d'un seul filtre par joueur. Ensuite en regardant si la somme des mini des points par couleur est inf à 13 et idem pour les points la compatibilité initiale avant de lancer la recherche des donnes des filtres me semble plus aisée à vérifier.

Enfin, comme je ne crois pas l'avoir vu, est ce qu'une vue montrant simultanément et explicitement (valeurs points et nbre de cartes par couleur) les filtres de tous les joueurs ne serait pas intéressante pour comprendre ce qui est demandé par une séquence aux donnes?

Envoyé depuis mon smartphone Samsung Galaxy.

hquatreville commented 5 years ago

Tout cela mérite une explication.

L'objet Sequence a pour but de modéliser les une, deux ou trois premières enchères qui vont être produite à une table de bridge de façon à pouvoir travailler la suite.

Je veux par exemple générer des donnes qui vont correspondre à la situation suivante :

Sud ouvre de 1P Ouest intervient à 2T ou 2K Nord possède un soutien à pique (au moins 3 cartes)

Le jeu de Sud va être décrit par un filtre Le jeu de Nord aussi Le jeu d'Ouest va être décrit par deux filtres (liés par un OU)

Il n'y a pas de filtre négatif.

Autre exemple

Nord passe Ouest passe Sud ouvre de 1P

C'est facile de décrire l'ouverture de Sud à l'aide d'un filtre Par contre, pour décrire les passe, je vais créer 3 filtre négatifs

  1. Ouverture générique 12H et plus
  2. Ouverture faible à coeur : 6 cartes et plus
  3. Ouverture faible à trèfle ou carreau : 7 cartes et plus

Troisième exemple d'une situation que l'on, massacre en général :+1: Nord ouvre de 1P, ensuite Est et Sud passent et Ouest est en situation d'enchérir

Ouverture de Nord : Un filtre Passe de Sud : un filtre (jeu faible) suffit Par contre le passe d'Est est difficile à décrire : le plus simple est de filtrer négativement les différentes interventions dont il dispose.

Voila

Sinon, la réponse "filtres incompatibles" signifie en fait improbable.

JiPiBi commented 5 years ago

J interprète les filtres négatifs comme des maxis : je comprends bien qd il s agit d être inf à 12 points par contre comment a t on un jeu faible avec 6 cartes d une couleur. Sauf à comprendre que c est la combinaison des 2 contraintes avec un ET moins de 12 pts et moins de 6 coeurs: pourriez vous repreciser les filtres utilisés pour chaque joueur dans le 2eme cas ?

Pour ce qui concerne les OU pourriez vous de même précisez comment cela est obtenu: je suppose en sélectionnant plusieurs filtres positifs ou negatifs mais les ET est ce en utilisant un seul filtre que cela se produit ?

Envoyé depuis mon smartphone Samsung Galaxy.

hquatreville commented 5 years ago

Voici comment je filtre

Les filtres positifs fonctionnent ainsi :

Pour chaque position : il suffit que l'un des filtres soit réalisé pour les le test soit positif (S'il n'y a pas de filtre du tout, c'est automatiquement réussi) Logiquement : c'est un OU Mais il faut que les quatre positions passe le test Logiquement : c'est un ET

Les filtres négatifs fonctionnent ainsi : Aucun ne doit être réalisé pour passer le test.

Cela dit, je suis en train d'écrire une procédure pour distribuer une donne selon une séquence de filtre qui mathématiquement n'est pas trop baisée et qui va éviter la procédure actuelle couteuse pour les donnes rares. L'algorithme est clair dans ma tête, ne reste qu'à l'emplémenter

Normalement fin de week-end ou au plus tard la semaine prochaine.

JiPiBi commented 5 years ago

Une partie de mes interrogations venait de ma mauvaise lecture des filtres vous avez déjà encadré les min max, dont acte. C est un détail mais MIN MAX en haut m auraient peut etre plus alerté , mais le filtre marche très bien si on veut baisser le max en dessous du min, le min est entraîné .

Par contre je continue à vous encourager à vérifier la compatibilité globale des filtres avant de lancer les donnes : somme des min inférieur au max qui sans filtre alternatif pour le joueur créé un blocage .

Attention car actuellement si la donne que vous testez , respecte un filtre incompatible qui serait le premier de la liste pour le joueur, je suppose qu' on regarde le filtre du joueur suivant mais à la fin on est toujours globalement incompatible, donc la gestion des filtres incompatibles n'est pas si simple.

Bon courage

Envoyé depuis mon smartphone Samsung Galaxy.

JiPiBi commented 5 years ago

J ai un doute sur le test d une donne vis à vis des filtres : est ce que vous testez toute la combinatoire des filtres sur chaque donne ( pour répondre à ma précédente remarque qui n'est peut être pas justifiée) ?

En reflechissant sur les filtres negatifs, est ce que vous les integrez déjà comme contrainte au debut dans les filtres positifs (tous les ou) pour simplifier les tests et sinon est ce que cela ne serait pas intéressant ?

Envoyé depuis mon smartphone Samsung Galaxy.

hquatreville commented 5 years ago

Bon, c'est mon premier projet informatique de plus d'une page de code.

Les difficultés que je rencontre ne sont pas là où je les attendaient. Mettre de la couleur dans tkinter par exemple m'a pris juste quelques heures, le temps de trouver le site adequat (en l'occurence https://coolors.co/, qui permet de le faire en deux trois clics.

En lisant tes commentaire, JiPiBi, je comprend, que la seule véritable difficulté, c'est l'ergonomie. Car les questions que tu te poses prouvent que l'interface n'est pas claire.

Donc, je vais faire les choses suivantes :

De sorte que l'utilisateur puisse utiliser immédiatement les fonctionnalités des séquences sans avoir à faire les réglages. La curiosité le mènera (ou pas) vers une utilisation plus fine.

De plus, en cas de fortes contraintes distributionnelles, le temps de calcul est trop long, donc jke suis en train de remanier la distribution. Mais si, l'algorithme est la, l'implémenter est un vrai sac de noeuds car les contraintes sont en deux dimensions (couleur et position) et que je souhaite respecter une équirépartition des distributions.

JiPiBi commented 5 years ago

Il ne faut surtout pas dévaloriser votre résultat bien au contraire. Vous avez fait de très belles choses dans l IHM. Le pb est ensuite que le non dit dans le fonctionnement parce que vous êtes le créateur ne crée pas trop d interrogations chez l utilisateur. Donc j'ai eu un peu de mal à comprendre la logique initiale voire l intérêt car la phase enchère est très complexe et remplit des livres de conventions. Mais si vous garantissez la phase de cohérence des contraintes, cela devrait marcher : une donne rare n'est pas là même chose qu' un filtre incompatible. Quand la donne est rare on peut adapter les nombres de donnes ou le temps de recherche qd les filtres sont incompatibles il faut changer les filtres.

En terme d ergonomie donc je pense que le but était atteint à des détails près. J avais juste des questions sur le fonctionnement des filtres. Je continue à penser que les filtres négatifs pour un joueur sont équivalents à un seul filtre positif en n ayant que des maxi. Si quelqu'un a accès à des filtres modifiables, il aura les memes attentes.

Le fait de préparer des donnes me fait penser à ce que fait mon épouse avec ses amies avoir des donnés dont il existe une solution optimale : est ce l idee ?

Pour ce qui concerne les equidistributions, je ne sais pas ce que vous avez en tête mais à partir du moment où vous lancez 1 million de donnes au hasard et ne retenez que celles qui respectent certains critères vous avez déjà influencé le hasard. Si à l intérieur du résultat vous prenez un nombre restreint de donnes pas toujours les mêmes et pas toujours dans le même ordre vous établissez un peu de hasard.

En tous cas bravo pour le résultat. Il faudra que je je prenne le temps de regarder sous le capot car je n'ai jamais traité que des pbs à la console.

Enfin juste une idée sur le test des donnes sur les filtres , ça m'a fait penser à un sudoku en recursif que j'ai fait et qui testait toute la combinatoire .

Envoyé depuis mon smartphone Samsung Galaxy.

JiPiBi commented 5 years ago

Bonjour @hquatreville

fichier echange mis à jour

JiPiBi commented 5 years ago

Bonjour @hquatreville

fichier echange mis à jour