Skip to content

Exercice 4 : tournoi entre stratégies - #22577

Closed
MathisGramaglia wants to merge 1 commit into
jsboige:mainfrom
MathisGramaglia:main
Closed

MathisGramaglia wants to merge 1 commit into
jsboige:mainfrom
MathisGramaglia:main

Conversation

@MathisGramaglia

Copy link
Copy Markdown

Contribution publique : bienvenue, même sans maîtrise du harnais interne. Remplissez les sections qui vous concernent et décrivez honnêtement les tests effectués.

Étudiants (PR de TP) : remplissez seulement Summary ; votre encadrant traite les checklists et la CI.

Grain (agents internes uniquement — variation-protocol) — première ligne du body, format :

Grain: <TIER>/<GENRE> — lane <machine:workspace> — prev: <TIER>/<GENRE> #<PR>

Summary

Contribution publique

  • Mode : contribution classique / correction d'exercice
  • Issue associée : #...
  • Notebook et exercice concernés (si correction d'exercice) :
  • Crédit souhaité (nom ou pseudonyme GitHub) :

Une correction d'exercice validée sera intégrée comme exemple guidé crédité. Les mainteneurs ajouteront un nouvel exercice non résolu de difficulté comparable ; vous n'avez pas à effectuer cette transformation vous-même.

Changes

Review Checklist

  • 1. Scope — PR does exactly what it announces, nothing more, nothing less
  • 2. Post-fix validation — Automated script ran AFTER the last commit on the deliverable (not just source code)
  • 3. Pedagogical coherence — Exercises aligned with taught content, no redundancy, TODO stubs consistent, logical cell order
  • 4. Real execution — Notebooks executed with outputs (Papermill/Jupyter), Slidev ?clicks=99 for slides
  • 5. Regression check — Grep touched symbols in the rest of the repo; no unintended side effects

Anti-regression

  • No sorry introduced in Lean/Coq certified modules (run: grep -c sorry on touched .lean files)
  • No @pytest.skip or assert True added to bypass failing tests
  • Deletions on production code justified (ratio insertions/deletions reasonable)

Notebook-specific

  • No raise NotImplementedError / assert False / 1/0 in any cell (use pass or print("Exercice a completer"))
  • All code cells have execution_count: <int> + coherent outputs
  • Only notebooks with source changes are committed (rule C.3)

Test plan

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes] Review (TP) — Exercice 4 : tournoi entre stratégies

Merci pour cette contribution — l'Exercice 4 est résolu de bout en bout, avec une exécution authentique du carnet (sorties .NET interactives datées d'aujourd'hui 14:09Z). Points forts :

  • JouerPartie générique bien séparé du tournoi : la fonction prend les deux politiques en argument, exactement l'indice de l'énoncé, et renvoie l'utilité du point de vue de MAX.
  • Lecture correcte du match retour : quand B commence, le résultat est lu à l'envers (r2 == 1 → victoire B) — c'est le piège classique de l'exercice et il est évité.
  • Chronométrage par stratégie via le wrapper Chrono (temps total / nombre de coups) plutôt qu'un Stopwatch ad hoc par partie : propre et réutilisable.
  • Résultats sémantiquement justes : Minimax vs Alpha-Beta = 10 nuls sur 10 (morpion résolu, deux joueurs optimaux → nul forcé), Aléatoire perd 0-7 et 0-8 contre les joueurs optimaux. La seed Random(42) rend le tournoi reproductible.

Observations factuelles pour votre encadrant (rien à changer de votre côté pour le TP) :

  • Le carnet est ajouté à la racine du dépôt, alors que le squelette de l'exercice vit dans MyIA.AI.Notebooks/Search/Part1-Foundations/Search-06-AdversarialSearch-CSharp.ipynb — l'intégration au bon endroit sera arbitrée par l'encadrant.
  • Les cellules Exercices 1-3 (Connect Four, ordonnancement, negamax) du squelette ont été retirées du carnet livré ; seule la section Exercice 4 est complétée, conformément au titre de la PR.

Bien joué pour le cadre de tournoi et la lecture croisée des deux sens de jeu.

@github-actions github-actions Bot added the pr-gate-missing PR gate absent du rollup: contexte requis jamais rapporte, PR bloquee, checks verts (#10928) label Oct 25, 2026
@github-actions

Copy link
Copy Markdown
Contributor

PR gate absent du rollup (advisory, #10928)

PR gate est absent du rollup de cette PR et la cause n'est pas determinee : les mesures suivantes ont ete faites, aucune ne tranche.

  • mergeable_state = blocked (pas dirty) ;
  • aucun evenement base_ref_changed dans la timeline ;
  • le sujet du commit de tete ne porte pas le token [skip ci] ;
  • auteur : MathisGramaglia (pas une PR bot).

Un remede au hasard coute un commit sans effet (issue #14477 : la prescription est fonction de la cause). Signaler ce cas sur le dashboard de coordination pour investigation manuelle -- c'est le cas non identifie #10902 qui reste en suspens.

Cause mesuree : mergeable_state=blocked, pas de base_ref_changed, sujet sans [skip ci], auteur MathisGramaglia

jsboige added a commit that referenced this pull request Oct 25, 2026
…6-CSharp (ids deplaces + cellules neuves)

Les cellules c7a3beaf et 75215c34 ont ete re-ajoutees sous de nouveaux ids
(2554ce3b, cc3daa85) : lignes remappees, puis extract_cells_to_csv.py --update
(3 lignes rafraichies, 4 ajoutees, 0 orpheline pour ce carnet). Les autres
derives signalees par check_translation_sync (Search-10 etc.) preexistent
sur main et ne sont pas touchees.

Part of #22577

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Oct 25, 2026
…oduction des exercices

La cellule de lecture, reecrite par l'integration, suivait directement le
stub de l'exercice 4 : le cliquet Split-reading la comptait comme lecture
d'exercice ajoutee (EXERCISE_READING). Son texte rejoint l'introduction
« ## Exercices », ou l'etudiant voit l'echelle avant de commencer ; deux
coquilles corrigees au passage. CSV de traduction resynchronise.

Part of #22577

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Oct 26, 2026
…s committees

Les cellules markdown 1d9db755 et dce59eaa citaient les temps d'une
execution anterieure (0,2095 s / 0,0061 s / 34,1x ; 0,0091 s) alors que
les sorties committees bd843e03 et d0a4ea60 donnent 0,5677 s / 0,0204 s /
27,8x et 0,0099 s. Lectures alignees sur les sorties, sans toucher aux
outputs, et formulees en ordre de grandeur (les temps absolus dependent
de la machine). CSV search-part1 resynchronise (2 lignes rafraichies).

Part of #22577

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Oct 26, 2026
…gration de l'exemple guide

Le jumeau C# porte desormais l'exemple guide 1 (tournoi algorithmique,
contribution etudiante creditee) et un exercice 4 sur la profondeur
limitee ; cote Python le tournoi reste l'exercice 6. L'asymetrie est
consignee dans known_differences, puis la paire est re-attestee
(check_twin_parity.py --update --pair "Search-06 AdversarialSearch").

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Oct 26, 2026
…mique) + nouvel Exercice 4 (#22587)

* Feat(search,#22577): exercice 4 du TP integre en Exemple guide 1 (tournoi) + nouvel exercice 4 non resolu

Digestion TP etudiant : le cadre de tournoi (ResultatMatch, JoueurAleatoire,
JouerPartie, aller-retour 5 manches, ms/coup) devient l'Exemple guide 1, credite
sans nom ; l'ancien exercice 4 (resolu par le TP) est remplace par un exercice
comparable non resolu (MinimaxLimite + heuristique, compromis victoires/temps).
Re-execution complete .NET Interactive 12/12, 0 erreur, sortie fraiches.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Fix(translation,#22577): resynchroniser search-part1.csv sur Search-06-CSharp (ids deplaces + cellules neuves)

Les cellules c7a3beaf et 75215c34 ont ete re-ajoutees sous de nouveaux ids
(2554ce3b, cc3daa85) : lignes remappees, puis extract_cells_to_csv.py --update
(3 lignes rafraichies, 4 ajoutees, 0 orpheline pour ce carnet). Les autres
derives signalees par check_translation_sync (Search-10 etc.) preexistent
sur main et ne sont pas touchees.

Part of #22577

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Fix(search,#22577): replier « Lire les quatre exercices » dans l'introduction des exercices

La cellule de lecture, reecrite par l'integration, suivait directement le
stub de l'exercice 4 : le cliquet Split-reading la comptait comme lecture
d'exercice ajoutee (EXERCISE_READING). Son texte rejoint l'introduction
« ## Exercices », ou l'etudiant voit l'echelle avant de commencer ; deux
coquilles corrigees au passage. CSV de traduction resynchronise.

Part of #22577

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Fix(search,#22577): aligner les deux lectures de temps sur les sorties committees

Les cellules markdown 1d9db755 et dce59eaa citaient les temps d'une
execution anterieure (0,2095 s / 0,0061 s / 34,1x ; 0,0091 s) alors que
les sorties committees bd843e03 et d0a4ea60 donnent 0,5677 s / 0,0204 s /
27,8x et 0,0099 s. Lectures alignees sur les sorties, sans toucher aux
outputs, et formulees en ordre de grandeur (les temps absolus dependent
de la machine). CSV search-part1 resynchronise (2 lignes rafraichies).

Part of #22577

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Fix(search,#22577): re-attestation de la paire Search-06 apres l'integration de l'exemple guide

Le jumeau C# porte desormais l'exemple guide 1 (tournoi algorithmique,
contribution etudiante creditee) et un exercice 4 sur la profondeur
limitee ; cote Python le tournoi reste l'exercice 6. L'asymetrie est
consignee dans known_differences, puis la paire est re-attestee
(check_twin_parity.py --update --pair "Search-06 AdversarialSearch").

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
@myia-ai-01

Copy link
Copy Markdown
Collaborator

Merci pour ce tournoi : l'exercice 4 est résolu de bout en bout et le contenu est juste. JouerPartie est générique, le match retour est lu dans le bon sens, le chronométrage passe par Chrono et la graine Random(42) rend le tournoi reproductible. Les résultats sont ceux qu'on attend d'un morpion résolu : le joueur aléatoire ne gagne aucune partie, et Minimax contre Alpha-Beta fait nul à chaque manche.

Ce qui a été intégré, et où. Votre travail est entré dans le carnet canonique MyIA.AI.Notebooks/Search/Part1-Foundations/Search-06-AdversarialSearch-CSharp.ipynb par la PR #22587, comme Exemple guidé 1 — Tournoi algorithmique, crédité « Contribution d'un groupe d'étudiants (TP, PR #22577) ». Votre code est repris à l'identique, le tournoi a été ré-exécuté et la lecture du résultat rédigée d'après ses sorties. Pour les promotions suivantes, un nouvel exercice 4 prend la place de celui que vous avez résolu : « Profondeur limitée : le compromis victoires/temps ». Il réutilise votre cadre de tournoi. Si vous souhaitez que vos noms ou pseudonymes figurent dans le crédit, dites-le dans un commentaire ici et nous l'ajouterons.

Pourquoi cette PR est fermée plutôt que fusionnée, et comment faire la prochaine fois. Seule la forme empêchait une fusion directe :

  • le carnet a été ajouté à la racine du dépôt, sous forme de copie, alors que l'exercice vit dans MyIA.AI.Notebooks/Search/Part1-Foundations/. Il faut modifier directement le carnet existant, à sa place, depuis une branche dédiée au TP sur votre fork ;
  • les cellules des exercices 1 à 3 avaient été retirées de la copie. Il faut les laisser en place et ne compléter que l'exercice traité.

Avec ces deux gestes, la PR montre seulement votre exercice et peut être fusionnée telle quelle. Bonne présentation demain matin !

@myia-ai-01 myia-ai-01 closed this Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-gate-missing PR gate absent du rollup: contexte requis jamais rapporte, PR bloquee, checks verts (#10928)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants