*** La chasse au cerf sous forme séquentielle Plusieurs étapes de décision Les joueurs jouent l'un après l'autre les issues c'est nombre de noeud ^2 Pour résoudre un jeu comme ça on fait de l'induction à rebours on regarde ce que le joueur a intérêt à faire selon le cas de figure On met une étoile là où c'est le meilleur choix des deux Celui qui joue en premier connaît les intérêts du joueur 2 donc le joueur 1 sait ce que le joueur va choisir il va donc devoir choisir entre plus que 2 choix il va donc choisir le choix qui maximise ses propres gain un [[équilibre de nash]] parfait en sous-jeux C,C et C,D = D1 D,C et D,D = D2 Pour le joueur 2, C,C et D,C ne sont pas des choix crédibles Le joueur 1 va donc choisir D,D -> Le jeu c'est le **dilemme du prisonnier** Il est aussi possible que certains choix favorisent pour joueur 2 = A,C ## Notes de bas de page ```dataviewjs // === DONNÉES === const page = dv.current(); const file = page.file; const outlinks = file.outlinks.length; const inlinks = file.inlinks.length; const qualite = Math.max(0, Math.min(100, page["qualité"] ?? 0)); // === CALCUL PROGRESSION (0–100) === const max_links = 30; const s_out = Math.min(outlinks / max_links, 1) * 40; const s_in = Math.min(inlinks / max_links, 1) * 30; const s_qual = qualite * 0.3; const total = Math.round(s_out + s_in + s_qual); // === ICÔNES === const iconEmoji = total <= 25 ? "🌱" : total <= 50 ? "🌿" : total <= 75 ? "🌳" : "🦚"; const iconLabel = total <= 25 ? "🌱 Graine" : total <= 50 ? "🌿 Jeune pousse" : total <= 75 ? "🌳 Arbre mature" : "🦚 Forêt"; // === MISE À JOUR YAML SANS CRÉER DE NOUVELLES CLÉS === const tfile = app.workspace.getActiveFile(); const cache = app.metadataCache.getFileCache(tfile); // 1. Si pas de frontmatter → on ne touche à rien if (cache?.frontmatter) { await app.fileManager.processFrontMatter(tfile, fm => { // 2. On met à jour seulement si la propriété existe déjà if (Object.prototype.hasOwnProperty.call(fm, "progression")) { fm.progression = total; } if (Object.prototype.hasOwnProperty.call(fm, "icon")) { fm.icon = iconEmoji; } }); } // === AFFICHAGE === dv.table( ["Liens sortants", "Liens entrants", "Qualité", "Progression"], [[outlinks, inlinks, `${qualite}/100`, `${iconLabel} — ${total}/100`]] ); ```