{"kind":"Notebook","sha256":"3f55ba973915637058079decb3111dbe267deae0b975af260606cf43401e5aeb","slug":"td-5","location":"/Enseignants/Semaine6/TD.md","dependencies":[],"frontmatter":{"title":"TD 6 : Jeu de Yam’s","exports":[{"format":"md","filename":"TD.md","url":"/Enseignement/Info111/myst/build/TD-cfa99ae0269403471de02dbbbcf0ce27.md"}],"kernelspec":{"name":"xcpp17","language":"C++17","display_name":"C++17"},"jupytext":{"text_representation":{"extension":".md","format_name":"myst","format_version":"0.13"}},"keywords":[]},"mdast":{"type":"root","children":[{"type":"block","position":{"start":{"line":22,"column":1},"end":{"line":22,"column":1}},"children":[{"type":"admonition","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Notes aux enseignants","position":{"start":{"line":24,"column":1},"end":{"line":24,"column":1}},"key":"gImZo0XDcE"}],"key":"I9PqFI5fXI"},{"type":"paragraph","position":{"start":{"line":26,"column":1},"end":{"line":34,"column":1}},"children":[{"type":"text","value":"Le but du petit exercice suivant est de montrer aux élèves que les boucles\nimbriquées n’ont rien de magique ou mystérieux, qu’il s’agit juste\nd’appliquer rigoureusement ce qu’ils ont déjà vu à propos des boucles\n","position":{"start":{"line":26,"column":1},"end":{"line":26,"column":1}},"key":"SWDIiO0Epe"},{"type":"inlineCode","value":"for","position":{"start":{"line":26,"column":1},"end":{"line":26,"column":1}},"key":"BgVkXyVVVj"},{"type":"text","value":": on fait d’abord une unique fois l’initialisation,\npuis on teste la condition, et si elle est vraie on fait le corps de\nla boucle, puis l’incrémentation, puis on re-teste la condition, etc.\nSimplement dans le cas des boucles imbriquées, notre boucle contient\nune boucle, donc quand on en est à l’étape “faire le corps de la boucle”,\neh bien on fait la boucle interne, tout simplement.","position":{"start":{"line":26,"column":1},"end":{"line":26,"column":1}},"key":"kmBpBSbJH0"}],"key":"BUEcLFrEBf"},{"type":"paragraph","position":{"start":{"line":36,"column":1},"end":{"line":37,"column":1}},"children":[{"type":"text","value":"Exécutez pas à pas ce petit bout de programme pour bien leur faire\ncomprendre le principe, sans y passer trop de temps (environ 5 minutes).","position":{"start":{"line":36,"column":1},"end":{"line":36,"column":1}},"key":"G1Txw1ClFv"}],"key":"BPmYQKabpi"}],"key":"Pq1G6dceBz"}],"data":{"tags":["instructor"]},"visibility":"show","key":"IGiEQrlMzO"},{"type":"block","position":{"start":{"line":41,"column":1},"end":{"line":41,"column":1}},"children":[{"type":"admonition","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Exercice 1 : Aparté: boucles imbriquées","position":{"start":{"line":43,"column":1},"end":{"line":43,"column":1}},"key":"MdLuOJZow2"}],"key":"ZmdBGljIou"},{"type":"paragraph","position":{"start":{"line":45,"column":1},"end":{"line":45,"column":1}},"children":[{"type":"text","value":"Devinez l’affichage du fragment de programme mystère suivant :","position":{"start":{"line":45,"column":1},"end":{"line":45,"column":1}},"key":"uSD0QPkO2H"}],"key":"IysLpPpVsn"},{"type":"include","file":"bouclesImbriquees-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN bouclesImbriquees","endBefore":"END bouclesImbriquees"},"children":[{"type":"code","value":"for ( int i = 1; i <= 4; i++ ) {\n    for ( int j = 1; j <= i; j++ ) {\n        cout << \"(\" << i << \",\" << j << \") \";\n    }\n    cout << endl;\n}","lang":"cpp","filename":"bouclesImbriquees-correction.cpp","key":"OmX9fDjrg4"}],"key":"FmJYAmDebn"},{"type":"paragraph","position":{"start":{"line":52,"column":1},"end":{"line":52,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION","position":{"start":{"line":52,"column":1},"end":{"line":52,"column":1}},"key":"PPfDtTAstR"}],"key":"WjKrYZSlP7"},{"type":"code","lang":"C++17","value":"(1,1) \n(2,1) (2,2) \n(3,1) (3,2) (3,3) \n(4,1) (4,2) (4,3) (4,4)","position":{"start":{"line":54,"column":1},"end":{"line":57,"column":1}},"key":"Igu27KXXoO"},{"type":"paragraph","position":{"start":{"line":59,"column":1},"end":{"line":59,"column":1}},"children":[{"type":"text","value":"/// END SOLUTION","position":{"start":{"line":59,"column":1},"end":{"line":59,"column":1}},"key":"CziJICoOSY"}],"key":"O4dBL8oAyz"}],"key":"sicKzd0wei"},{"type":"heading","depth":1,"position":{"start":{"line":63,"column":1},"end":{"line":63,"column":1}},"children":[{"type":"text","value":"Problème : le jeu de Yam’s","position":{"start":{"line":63,"column":1},"end":{"line":63,"column":1}},"key":"Ldko0QoBKi"}],"identifier":"probl-me-le-jeu-de-yam-s","label":"Problème : le jeu de Yam’s","html_id":"probl-me-le-jeu-de-yam-s","implicit":true,"key":"pyKjtE7BCq"}],"data":{"nbgrader":{"grade":true,"locked":false,"points":0,"grade_id":"10","schema_version":3,"solution":true}},"key":"Sbzy6jB1wf"},{"type":"block","position":{"start":{"line":65,"column":1},"end":{"line":65,"column":1}},"children":[{"type":"admonition","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Notes aux enseignants","position":{"start":{"line":67,"column":1},"end":{"line":67,"column":1}},"key":"xH1LjsF9jk"}],"key":"E9IMzxEg6T"},{"type":"paragraph","position":{"start":{"line":69,"column":1},"end":{"line":72,"column":1}},"children":[{"type":"text","value":"Le problème est relativement long, mais sera également le sujet du TP.\nL’idée du TD est de leur présenter les différentes fonctions utilitaires,\nquelques cas de reconnaissance de figures ainsi que le fonctionnement global\ndu jeu.","position":{"start":{"line":69,"column":1},"end":{"line":69,"column":1}},"key":"rkJiPGLXz7"}],"key":"bXxUKzK4Kx"},{"type":"paragraph","position":{"start":{"line":74,"column":1},"end":{"line":77,"column":1}},"children":[{"type":"text","value":"S’ils ont bien compris le fonctionnement global les étudiants devraient\navoir suffisamment de temps pour y re-réfléchir et implémenter complètement\nle jeu pendant le TP, sous forme de fiche Jupyter et d’un code compilé\nde manière traditionnelle.","position":{"start":{"line":74,"column":1},"end":{"line":74,"column":1}},"key":"pfn7y25Rta"}],"key":"fYLhhGEBzI"}],"key":"Nu5OEJNQIb"}],"data":{"tags":["instructor"]},"visibility":"show","key":"i79C1lhLyz"},{"type":"block","position":{"start":{"line":81,"column":1},"end":{"line":81,"column":1}},"children":[{"type":"admonition","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Notes aux enseignants","position":{"start":{"line":83,"column":1},"end":{"line":83,"column":1}},"key":"bJmPbD6qV5"}],"key":"OlzDNYCq5Z"},{"type":"paragraph","position":{"start":{"line":85,"column":1},"end":{"line":87,"column":1}},"children":[{"type":"text","value":"Si besoin, motivez vos élèves en leur disant que l’examen mi-semestre\nest très bientôt et que ce sujet de TD/TP est adapté d’un sujet des\nannées précédentes.","position":{"start":{"line":85,"column":1},"end":{"line":85,"column":1}},"key":"fur9KneypD"}],"key":"O4FGswv0Qz"},{"type":"paragraph","position":{"start":{"line":89,"column":1},"end":{"line":98,"column":1}},"children":[{"type":"text","value":"Cette fiche de révision est l’occasion d’insister sur certains points\nencore mal compris de beaucoup d’élèves, par exemple la notion de\nparamètre, qui correspond à ce que la fonction a besoin qu’on lui\nfournisse quand on l’appelle.  En particulier quand quelque chose est\npris en paramètre, par exemple un tableau, la fonction ne doit pas\nredéclarer ni re-allouer ni ré-initialiser le paramètre (exemple :\nparamètre ","position":{"start":{"line":89,"column":1},"end":{"line":89,"column":1}},"key":"njmDQdLc9f"},{"type":"inlineCode","value":"des","position":{"start":{"line":89,"column":1},"end":{"line":89,"column":1}},"key":"r44poNiubn"},{"type":"text","value":" de la fonction ","position":{"start":{"line":89,"column":1},"end":{"line":89,"column":1}},"key":"sHgG3brJ5Y"},{"type":"inlineCode","value":"afficheDes","position":{"start":{"line":89,"column":1},"end":{"line":89,"column":1}},"key":"HpVFx6yIzR"},{"type":"text","value":" ou de la fonction\n","position":{"start":{"line":89,"column":1},"end":{"line":89,"column":1}},"key":"YTJ7TdBi5L"},{"type":"inlineCode","value":"compteDes","position":{"start":{"line":89,"column":1},"end":{"line":89,"column":1}},"key":"kAU3AO0Hp0"},{"type":"text","value":").  Par contre quand une fonction est censée renvoyer un\nnouveau tableau, c’est à elle de déclarer, allouer et initialiser le\ntableau (exemple : variable ","position":{"start":{"line":89,"column":1},"end":{"line":89,"column":1}},"key":"KbMakZIPos"},{"type":"inlineCode","value":"res","position":{"start":{"line":89,"column":1},"end":{"line":89,"column":1}},"key":"ou5yzCCEFd"},{"type":"text","value":" de la fonction ","position":{"start":{"line":89,"column":1},"end":{"line":89,"column":1}},"key":"vokMjbtvOQ"},{"type":"inlineCode","value":"compteDes","position":{"start":{"line":89,"column":1},"end":{"line":89,"column":1}},"key":"V5rwZ6mM0c"},{"type":"text","value":").","position":{"start":{"line":89,"column":1},"end":{"line":89,"column":1}},"key":"UG4OJKgOMj"}],"key":"HDsnGqSp4o"},{"type":"paragraph","position":{"start":{"line":100,"column":1},"end":{"line":104,"column":1}},"children":[{"type":"text","value":"Autre notion fondamentale à rappeler : un return stoppe une fonction,\non ne doit donc jamais écrire quelque chose du style :\n","position":{"start":{"line":100,"column":1},"end":{"line":100,"column":1}},"key":"YK5VpdW8Ge"},{"type":"inlineCode","value":"for(...){ if(...) return ... else return ... }","position":{"start":{"line":100,"column":1},"end":{"line":100,"column":1}},"key":"mRkB29NnLv"},{"type":"text","value":".\nExemple : fonction ","position":{"start":{"line":100,"column":1},"end":{"line":100,"column":1}},"key":"rRBLK7mmeF"},{"type":"inlineCode","value":"chercheDansTableau","position":{"start":{"line":100,"column":1},"end":{"line":100,"column":1}},"key":"KbA1lOJcOL"},{"type":"text","value":" qui si elle est mal écrite\nne teste que la première case du tableau.","position":{"start":{"line":100,"column":1},"end":{"line":100,"column":1}},"key":"agUIzyKlAL"}],"key":"i4hT0rBtqX"},{"type":"paragraph","position":{"start":{"line":106,"column":1},"end":{"line":108,"column":1}},"children":[{"type":"text","value":"Enfin profitez de chaque fonction pour insister sur les règles\nd’écriture de l’en-tête d’une fonction, et la présence ou absence de\n","position":{"start":{"line":106,"column":1},"end":{"line":106,"column":1}},"key":"rdbVvUVhI1"},{"type":"inlineCode","value":"return","position":{"start":{"line":106,"column":1},"end":{"line":106,"column":1}},"key":"q59ItceSnI"},{"type":"text","value":".","position":{"start":{"line":106,"column":1},"end":{"line":106,"column":1}},"key":"OJNcFmGNu2"}],"key":"hw9QUhLfrV"},{"type":"paragraph","position":{"start":{"line":110,"column":1},"end":{"line":116,"column":1}},"children":[{"type":"text","value":"Une idée pour faire comprendre aux élèves la différence entre ","position":{"start":{"line":110,"column":1},"end":{"line":110,"column":1}},"key":"UcuCVrFvhb"},{"type":"inlineCode","value":"return","position":{"start":{"line":110,"column":1},"end":{"line":110,"column":1}},"key":"rS3xEpS7gi"},{"type":"text","value":"\net ","position":{"start":{"line":110,"column":1},"end":{"line":110,"column":1}},"key":"U0hOWosGQX"},{"type":"inlineCode","value":"cout","position":{"start":{"line":110,"column":1},"end":{"line":110,"column":1}},"key":"Uz27oZNR0I"},{"type":"text","value":" (affichage): c’est comme la différence entre une voiture et\nune photo de voiture. Si on a une voiture on peut l’utiliser, tandis\nque si on a une photo de voiture on peut juste la regarder.  Faire\nréférence à ce qui avait été fait en TP, où on pouvait écrire\n","position":{"start":{"line":110,"column":1},"end":{"line":110,"column":1}},"key":"dXyCTzkdZq"},{"type":"inlineCode","value":"abs(a) + abs(b)","position":{"start":{"line":110,"column":1},"end":{"line":110,"column":1}},"key":"HSgEfgpUFr"},{"type":"text","value":" tandis que ","position":{"start":{"line":110,"column":1},"end":{"line":110,"column":1}},"key":"HGrNQKztWc"},{"type":"inlineCode","value":"afficheAbs(a) + afficheAbs(b)","position":{"start":{"line":110,"column":1},"end":{"line":110,"column":1}},"key":"oa9v63EG5H"},{"type":"text","value":" donne une\nerreur.","position":{"start":{"line":110,"column":1},"end":{"line":110,"column":1}},"key":"duwJ8IOWhI"}],"key":"u2927TkV7K"}],"key":"jk3aMnW9VB"}],"data":{"tags":["instructor"]},"visibility":"show","key":"TWavY5wfy0"},{"type":"block","position":{"start":{"line":120,"column":1},"end":{"line":120,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":122,"column":1},"end":{"line":124,"column":1}},"children":[{"type":"text","value":"Le jeu de Yam’s (ou Yahtzee) est un jeu de dés dont le but est\nd’enchaîner les combinaisons à l’aide de cinq dés pour remporter un\nmaximum de points.","position":{"start":{"line":122,"column":1},"end":{"line":122,"column":1}},"key":"sjdv5EiMJI"}],"key":"Bk8s3X1osg"},{"type":"paragraph","position":{"start":{"line":126,"column":1},"end":{"line":127,"column":1}},"children":[{"type":"text","value":"Nous ne nous intéressons ici qu’à une version simplifiée du Yam’s et\nchercherons à reconnaître les figures suivantes :","position":{"start":{"line":126,"column":1},"end":{"line":126,"column":1}},"key":"lWmWUKTd6X"}],"key":"gBrko514vg"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":129,"column":1},"end":{"line":131,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":129,"column":1},"end":{"line":129,"column":1}},"children":[{"type":"strong","position":{"start":{"line":129,"column":1},"end":{"line":129,"column":1}},"children":[{"type":"text","value":"brelan","position":{"start":{"line":129,"column":1},"end":{"line":129,"column":1}},"key":"yb9KUR9nZL"}],"key":"lEPAmbzGVm"},{"type":"text","value":": 3 dés identiques parmi les 5 dés","position":{"start":{"line":129,"column":1},"end":{"line":129,"column":1}},"key":"fhMclnrpWs"}],"key":"x2jzxdq1Rj"},{"type":"listItem","spread":true,"position":{"start":{"line":130,"column":1},"end":{"line":131,"column":1}},"children":[{"type":"strong","position":{"start":{"line":130,"column":1},"end":{"line":130,"column":1}},"children":[{"type":"text","value":"yam’s","position":{"start":{"line":130,"column":1},"end":{"line":130,"column":1}},"key":"oq5DFnvHK7"}],"key":"f2HbgI7WKs"},{"type":"text","value":": les 5 dés identiques.","position":{"start":{"line":130,"column":1},"end":{"line":130,"column":1}},"key":"xid1L3ntfR"}],"key":"XnkVc6YMET"}],"key":"aL75Zd9NT5"},{"type":"paragraph","position":{"start":{"line":132,"column":1},"end":{"line":138,"column":1}},"children":[{"type":"text","value":"Les figures permettent de marquer des points.  À chacune de ces\nfigures sont associés des bonus : ","position":{"start":{"line":132,"column":1},"end":{"line":132,"column":1}},"key":"HbFWlFn99d"},{"type":"strong","position":{"start":{"line":132,"column":1},"end":{"line":132,"column":1}},"children":[{"type":"text","value":"10 pour le brelan","position":{"start":{"line":132,"column":1},"end":{"line":132,"column":1}},"key":"LqGZzCZOZX"}],"key":"Zh5vEBO4Jy"},{"type":"text","value":", et ","position":{"start":{"line":132,"column":1},"end":{"line":132,"column":1}},"key":"Liwx5bx55l"},{"type":"strong","position":{"start":{"line":132,"column":1},"end":{"line":132,"column":1}},"children":[{"type":"text","value":"60 pour\nle yam’s","position":{"start":{"line":132,"column":1},"end":{"line":132,"column":1}},"key":"MhZIyMubtM"}],"key":"urvtnSWETJ"},{"type":"text","value":".  À cela, on ajoute ","position":{"start":{"line":132,"column":1},"end":{"line":132,"column":1}},"key":"Uhf4UA0xyg"},{"type":"strong","position":{"start":{"line":132,"column":1},"end":{"line":132,"column":1}},"children":[{"type":"text","value":"la somme des dés qui composent la\nfigure","position":{"start":{"line":132,"column":1},"end":{"line":132,"column":1}},"key":"mih2UfRvYL"}],"key":"GegC0OK20V"},{"type":"text","value":".  Par exemple, les dés ","position":{"start":{"line":132,"column":1},"end":{"line":132,"column":1}},"key":"Hi98a2pl2T"},{"type":"inlineMath","value":"\\lbrace 2, 5, 3, 5, 5 \\rbrace","position":{"start":{"line":132,"column":1},"end":{"line":132,"column":1}},"html":"<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><mo stretchy=\"false\">{</mo><mn>2</mn><mo separator=\"true\">,</mo><mn>5</mn><mo separator=\"true\">,</mo><mn>3</mn><mo separator=\"true\">,</mo><mn>5</mn><mo separator=\"true\">,</mo><mn>5</mn><mo stretchy=\"false\">}</mo></mrow><annotation encoding=\"application/x-tex\">\\lbrace 2, 5, 3, 5, 5 \\rbrace</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\"></span><span class=\"mopen\">{</span><span class=\"mord\">2</span><span class=\"mpunct\">,</span><span class=\"mspace\" style=\"margin-right:0.1667em;\"></span><span class=\"mord\">5</span><span class=\"mpunct\">,</span><span class=\"mspace\" style=\"margin-right:0.1667em;\"></span><span class=\"mord\">3</span><span class=\"mpunct\">,</span><span class=\"mspace\" style=\"margin-right:0.1667em;\"></span><span class=\"mord\">5</span><span class=\"mpunct\">,</span><span class=\"mspace\" style=\"margin-right:0.1667em;\"></span><span class=\"mord\">5</span><span class=\"mclose\">}</span></span></span></span>","key":"riGd8gbtsO"},{"type":"text","value":"\npermettent de marquer 10 points de bonus (brelan) et ","position":{"start":{"line":132,"column":1},"end":{"line":132,"column":1}},"key":"yQQBqrUWnM"},{"type":"inlineMath","value":"5 + 5 + 5 = 15","position":{"start":{"line":132,"column":1},"end":{"line":132,"column":1}},"html":"<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><mn>5</mn><mo>+</mo><mn>5</mn><mo>+</mo><mn>5</mn><mo>=</mo><mn>15</mn></mrow><annotation encoding=\"application/x-tex\">5 + 5 + 5 = 15</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.7278em;vertical-align:-0.0833em;\"></span><span class=\"mord\">5</span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span><span class=\"mbin\">+</span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span></span><span class=\"base\"><span class=\"strut\" style=\"height:0.7278em;vertical-align:-0.0833em;\"></span><span class=\"mord\">5</span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span><span class=\"mbin\">+</span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span></span><span class=\"base\"><span class=\"strut\" style=\"height:0.6444em;\"></span><span class=\"mord\">5</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"base\"><span class=\"strut\" style=\"height:0.6444em;\"></span><span class=\"mord\">15</span></span></span></span>","key":"dyPymURsJC"},{"type":"text","value":"\npoints, soit au total 25 points.  Le but des prochains exercices est\nde commencer l’implantation d’un jeu de Yam’s basique.","position":{"start":{"line":132,"column":1},"end":{"line":132,"column":1}},"key":"SI6dQLOHb6"}],"key":"VMv9R059tC"}],"key":"pK2a6cG5Hs"},{"type":"block","position":{"start":{"line":140,"column":1},"end":{"line":140,"column":1}},"children":[{"type":"admonition","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Exercice 2 : Échauffement : trois fonctions utilitaires","position":{"start":{"line":142,"column":1},"end":{"line":142,"column":1}},"key":"meijMzKSEn"}],"key":"QfgEFCkaJf"},{"type":"list","ordered":true,"start":1,"spread":false,"position":{"start":{"line":144,"column":1},"end":{"line":191,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":144,"column":1},"end":{"line":158,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":144,"column":1},"end":{"line":148,"column":1}},"children":[{"type":"text","value":"Spécifiez (documentation) et implantez (code) une fonction\n","position":{"start":{"line":144,"column":1},"end":{"line":144,"column":1}},"key":"uhjeUpzK1J"},{"type":"inlineCode","value":"afficheDes","position":{"start":{"line":144,"column":1},"end":{"line":144,"column":1}},"key":"rCBbHw2zjG"},{"type":"text","value":" qui affiche le contenu d’un tableau d’entiers,\nen affichant chaque entier du tableau suivi d’un espace.\nAinsi l’appel ","position":{"start":{"line":144,"column":1},"end":{"line":144,"column":1}},"key":"j84D1SjaSy"},{"type":"inlineCode","value":"afficheDes({1,2,3,5,4})","position":{"start":{"line":144,"column":1},"end":{"line":144,"column":1}},"key":"PCqNj2VMDt"},{"type":"text","value":" devra entraîner\nl’affichage ","position":{"start":{"line":144,"column":1},"end":{"line":144,"column":1}},"key":"KfuMAg4e96"},{"type":"inlineCode","value":"1 2 3 5 4 ","position":{"start":{"line":144,"column":1},"end":{"line":144,"column":1}},"key":"Bu6eGSc9tj"},{"type":"text","value":".","position":{"start":{"line":144,"column":1},"end":{"line":144,"column":1}},"key":"SYUi0niuFE"}],"key":"efmPAWZk6a"},{"type":"paragraph","position":{"start":{"line":150,"column":1},"end":{"line":150,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION","position":{"start":{"line":150,"column":1},"end":{"line":150,"column":1}},"key":"vL0VgociZq"}],"key":"bz2ng0HATj"},{"type":"include","file":"yams-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN afficheDes","endBefore":"END afficheDes"},"children":[{"type":"code","value":"void afficheDes(vector<int> des) {\n    for (int i = 0; i < des.size(); i++) {\n        cout << des[i] << \" \";\n    }\n    cout << endl;\n}","lang":"cpp","filename":"yams-correction.cpp","key":"YObV3F5XUS"}],"key":"PtqcakAry7"},{"type":"paragraph","position":{"start":{"line":157,"column":1},"end":{"line":157,"column":1}},"children":[{"type":"text","value":"/// END SOLUTION","position":{"start":{"line":157,"column":1},"end":{"line":157,"column":1}},"key":"nMT2mRqRXO"}],"key":"azVsLrIuS0"}],"key":"pYJvd68WaW"},{"type":"listItem","spread":true,"position":{"start":{"line":159,"column":1},"end":{"line":178,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":159,"column":1},"end":{"line":164,"column":1}},"children":[{"type":"text","value":"Spécifiez et implantez une fonction ","position":{"start":{"line":159,"column":1},"end":{"line":159,"column":1}},"key":"tKAjfwRb3W"},{"type":"inlineCode","value":"chercheDansTableau","position":{"start":{"line":159,"column":1},"end":{"line":159,"column":1}},"key":"yIaI0Qaxb8"},{"type":"text","value":"\nqui cherche l’emplacement d’un entier donné dans un tableau d’entiers.\nSi l’entier est présent dans le tableau, ","position":{"start":{"line":159,"column":1},"end":{"line":159,"column":1}},"key":"uLaW3ZpmJ5"},{"type":"inlineCode","value":"chercheDansTableau","position":{"start":{"line":159,"column":1},"end":{"line":159,"column":1}},"key":"jKLcbH8VQ1"},{"type":"text","value":"\nrenvoie ","position":{"start":{"line":159,"column":1},"end":{"line":159,"column":1}},"key":"S5fOE1DMRV"},{"type":"strong","position":{"start":{"line":159,"column":1},"end":{"line":159,"column":1}},"children":[{"type":"text","value":"l’indice d’une case du tableau le contenant","position":{"start":{"line":159,"column":1},"end":{"line":159,"column":1}},"key":"JscMpA0sUi"}],"key":"MWAfuGBi3B"},{"type":"text","value":".\nSi l’entier n’est pas présent dans le tableau on renverra ","position":{"start":{"line":159,"column":1},"end":{"line":159,"column":1}},"key":"CT0UYwZImY"},{"type":"strong","position":{"start":{"line":159,"column":1},"end":{"line":159,"column":1}},"children":[{"type":"text","value":"-1","position":{"start":{"line":159,"column":1},"end":{"line":159,"column":1}},"key":"PLiSrUbkPu"}],"key":"qRdlNzQdig"},{"type":"text","value":".\nAinsi:","position":{"start":{"line":159,"column":1},"end":{"line":159,"column":1}},"key":"NrcwpMnCVt"}],"key":"y2lTRlBMuw"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":165,"column":1},"end":{"line":169,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":165,"column":1},"end":{"line":166,"column":1}},"children":[{"type":"text","value":"l’appel ","position":{"start":{"line":165,"column":1},"end":{"line":165,"column":1}},"key":"tSaOmJ1J3m"},{"type":"inlineCode","value":"chercheDansTableau(3, {1,2,3})","position":{"start":{"line":165,"column":1},"end":{"line":165,"column":1}},"key":"Y68aI38jwM"},{"type":"text","value":"\ndevra renvoyer ","position":{"start":{"line":165,"column":1},"end":{"line":165,"column":1}},"key":"y18C4HxReC"},{"type":"inlineCode","value":"2","position":{"start":{"line":165,"column":1},"end":{"line":165,"column":1}},"key":"XNnq0eozOt"},{"type":"text","value":",","position":{"start":{"line":165,"column":1},"end":{"line":165,"column":1}},"key":"X5ugmFNf79"}],"key":"tVOpDYaNo1"},{"type":"listItem","spread":true,"position":{"start":{"line":167,"column":1},"end":{"line":169,"column":1}},"children":[{"type":"text","value":"l’appel ","position":{"start":{"line":167,"column":1},"end":{"line":167,"column":1}},"key":"cHpe0KEjDF"},{"type":"inlineCode","value":"chercheDansTableau(4, {1,2,3})","position":{"start":{"line":167,"column":1},"end":{"line":167,"column":1}},"key":"xtBu72P3Ml"},{"type":"text","value":"\ndevra renvoyer ","position":{"start":{"line":167,"column":1},"end":{"line":167,"column":1}},"key":"jQ8q66uhMZ"},{"type":"inlineCode","value":"-1","position":{"start":{"line":167,"column":1},"end":{"line":167,"column":1}},"key":"DSHqgOFQ6J"},{"type":"text","value":", etc.","position":{"start":{"line":167,"column":1},"end":{"line":167,"column":1}},"key":"ZoS0jeJllf"}],"key":"MstTpE61TA"}],"key":"T0WjYRNAxx"},{"type":"paragraph","position":{"start":{"line":170,"column":1},"end":{"line":170,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION","position":{"start":{"line":170,"column":1},"end":{"line":170,"column":1}},"key":"tfsdhfVPdh"}],"key":"XmSCzK43CK"},{"type":"include","file":"yams-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN chercheDansTableau","endBefore":"END chercheDansTableau"},"children":[{"type":"code","value":"\n/** Cherche si un entier est présent dans un tableau\n * @param n un entier\n * @param des un tableau d'entiers\n * @return -1 si l'entier n n'est pas dans le tableau,\n *         l'indice de son emplacement dans le tableau sinon\n **/\nint chercheDansTableau(int n, vector<int> des) {\n    for (int i = 0; i < des.size(); i++) {\n        if (des[i] == n) {\n            return i;\n        }\n    }\n    // Si on n'a pas trouvé l'entier on renvoie -1.\n    return -1;\n}","lang":"cpp","filename":"yams-correction.cpp","key":"TSzu4hO0so"}],"key":"bNYfIedxS9"},{"type":"paragraph","position":{"start":{"line":177,"column":1},"end":{"line":177,"column":1}},"children":[{"type":"text","value":"/// END SOLUTION","position":{"start":{"line":177,"column":1},"end":{"line":177,"column":1}},"key":"jT8ItueyWc"}],"key":"wftmx3inWW"}],"key":"lVQgdJBoNw"},{"type":"listItem","spread":true,"position":{"start":{"line":179,"column":1},"end":{"line":191,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":179,"column":1},"end":{"line":182,"column":1}},"children":[{"type":"text","value":"Spécifiez et implantez une fonction ","position":{"start":{"line":179,"column":1},"end":{"line":179,"column":1}},"key":"J8kMi48Wcw"},{"type":"inlineCode","value":"nombreOccurrences","position":{"start":{"line":179,"column":1},"end":{"line":179,"column":1}},"key":"k5KNsArOiI"},{"type":"text","value":"\nqui prend en paramètre un tableau d’entiers ","position":{"start":{"line":179,"column":1},"end":{"line":179,"column":1}},"key":"VnKQchd6i1"},{"type":"inlineCode","value":"t","position":{"start":{"line":179,"column":1},"end":{"line":179,"column":1}},"key":"RDvtAIsq3A"},{"type":"text","value":" et un\nentier ","position":{"start":{"line":179,"column":1},"end":{"line":179,"column":1}},"key":"uigLfGbxvb"},{"type":"inlineCode","value":"v","position":{"start":{"line":179,"column":1},"end":{"line":179,"column":1}},"key":"Iw71OuZ4zO"},{"type":"text","value":", et qui renvoie le nombre d’occurrences de\n","position":{"start":{"line":179,"column":1},"end":{"line":179,"column":1}},"key":"n1vaJzX41i"},{"type":"inlineCode","value":"v","position":{"start":{"line":179,"column":1},"end":{"line":179,"column":1}},"key":"qzY3lyDAUe"},{"type":"text","value":" dans ","position":{"start":{"line":179,"column":1},"end":{"line":179,"column":1}},"key":"A0tH4JuknH"},{"type":"inlineCode","value":"t","position":{"start":{"line":179,"column":1},"end":{"line":179,"column":1}},"key":"v6KjPSHyaK"},{"type":"text","value":" (combien de fois il apparaît).","position":{"start":{"line":179,"column":1},"end":{"line":179,"column":1}},"key":"qPcKhzednu"}],"key":"KrdsEYVY8R"},{"type":"paragraph","position":{"start":{"line":184,"column":1},"end":{"line":184,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION","position":{"start":{"line":184,"column":1},"end":{"line":184,"column":1}},"key":"yk3WLzfetP"}],"key":"PSGgqJr5CN"},{"type":"include","file":"yams-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN nombreOccurences","endBefore":"END nombreOccurences"},"children":[{"type":"code","value":"\n/** Compte le nombre d'occurrences d'un entier dans un tableau\n * @param un tableau d'entiers t\n * @param un entier v\n * @return un entier\n **/\nint nombreOccurences(vector<int> des, int v) {\n    int res = 0;\n    for (int i = 0; i < des.size(); i++) {\n        if ( des[i] == v ) {\n            res ++;\n        }\n    }\n    return res;\n}","lang":"cpp","filename":"yams-correction.cpp","key":"SVNJk27lI2"}],"key":"nmWP1oMji5"},{"type":"paragraph","position":{"start":{"line":191,"column":1},"end":{"line":191,"column":1}},"children":[{"type":"text","value":"/// END SOLUTION","position":{"start":{"line":191,"column":1},"end":{"line":191,"column":1}},"key":"ZehIqmXAmq"}],"key":"dgNlXrewVh"}],"key":"L6Os0Albw6"}],"key":"T1MIdYVsd9"}],"key":"MmY5ipew86"},{"type":"paragraph","position":{"start":{"line":195,"column":1},"end":{"line":195,"column":1}},"children":[{"type":"delete","children":[],"key":"YzLNj4pfVL"}],"key":"BwEgmI2bIS"}],"data":{"nbgrader":{"grade":true,"locked":false,"points":0,"grade_id":"20","schema_version":3,"solution":true}},"key":"VJeT2Co67c"},{"type":"block","position":{"start":{"line":197,"column":1},"end":{"line":197,"column":1}},"children":[{"type":"admonition","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Exercice 3 :","position":{"start":{"line":199,"column":1},"end":{"line":199,"column":1}},"key":"Rh1lzZEwgE"}],"key":"VKaCNicMeT"},{"type":"list","ordered":true,"start":1,"spread":false,"position":{"start":{"line":201,"column":1},"end":{"line":218,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":201,"column":1},"end":{"line":208,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":201,"column":1},"end":{"line":202,"column":1}},"children":[{"type":"text","value":"Observez les tests suivants et déduisez-en la spécification (rôle,\nentrées et sortie) de la fonction ","position":{"start":{"line":201,"column":1},"end":{"line":201,"column":1}},"key":"Vyf1IpaLLX"},{"type":"inlineCode","value":"compteDes","position":{"start":{"line":201,"column":1},"end":{"line":201,"column":1}},"key":"GQb3ubeOYK"},{"type":"text","value":":","position":{"start":{"line":201,"column":1},"end":{"line":201,"column":1}},"key":"WhlDvOINGs"}],"key":"XfHHNgZe5m"},{"type":"include","file":"yams-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN compteDesTests","endBefore":"END compteDesTests"},"children":[{"type":"code","value":"CHECK( compteDes({1,1,1,1,1}) == vector<int>({5,0,0,0,0,0}) );\nCHECK( compteDes({2,2,2,2,2}) == vector<int>({0,5,0,0,0,0}) );\nCHECK( compteDes({3,3,3,3,3}) == vector<int>({0,0,5,0,0,0}) );\nCHECK( compteDes({4,4,4,4,4}) == vector<int>({0,0,0,5,0,0}) );\nCHECK( compteDes({5,5,5,5,5}) == vector<int>({0,0,0,0,5,0}) );\nCHECK( compteDes({6,6,6,6,6}) == vector<int>({0,0,0,0,0,5}) );\nCHECK( compteDes({1,2,3,4,5}) == vector<int>({1,1,1,1,1,0}) );\nCHECK( compteDes({2,2,6,2,2}) == vector<int>({0,4,0,0,0,1}) );\nCHECK( compteDes({4,1,4,1,1}) == vector<int>({3,0,0,2,0,0}) );","lang":"cpp","filename":"yams-correction.cpp","key":"KzaQvni8eq"}],"key":"JEQ0813Ln1"}],"key":"G501BMM1iM"},{"type":"listItem","spread":true,"position":{"start":{"line":209,"column":1},"end":{"line":218,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":209,"column":1},"end":{"line":209,"column":1}},"children":[{"type":"text","value":"Proposez une implantation de cette fonction.","position":{"start":{"line":209,"column":1},"end":{"line":209,"column":1}},"key":"oG1c9kD69T"}],"key":"sg5f7dpibN"},{"type":"paragraph","position":{"start":{"line":211,"column":1},"end":{"line":211,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION","position":{"start":{"line":211,"column":1},"end":{"line":211,"column":1}},"key":"qQvbyHUFyz"}],"key":"j80j65Waxw"},{"type":"include","file":"yams-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN compteDes","endBefore":"END compteDes"},"children":[{"type":"code","value":"vector<int> compteDes(vector<int> des) {\n    vector<int> res = {0, 0, 0, 0, 0, 0};\n    for (int i = 0; i < des.size(); i++) {\n        // les indices des cases vont de 0 à 5, les valeurs de dé de 1 à 6\n        int indice = des[i] - 1;\n        res[indice] += 1;\n    }\n    return res;\n}","lang":"cpp","filename":"yams-correction.cpp","key":"fCQRjAaVa9"}],"key":"c5WhknJVs6"},{"type":"paragraph","position":{"start":{"line":218,"column":1},"end":{"line":218,"column":1}},"children":[{"type":"text","value":"/// END SOLUTION","position":{"start":{"line":218,"column":1},"end":{"line":218,"column":1}},"key":"fR9V3uChhD"}],"key":"uJaKBIMMhz"}],"key":"mEewIoyHaI"}],"key":"ncccdDyL5A"}],"key":"sDZqNmJSry"}],"data":{"nbgrader":{"grade":true,"locked":false,"points":0,"grade_id":"30","schema_version":3,"solution":true}},"key":"iEUIGjQz5J"},{"type":"block","position":{"start":{"line":222,"column":1},"end":{"line":222,"column":1}},"children":[{"type":"admonition","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Exercice 4 : Yam’s!","position":{"start":{"line":224,"column":1},"end":{"line":224,"column":1}},"key":"mYx4Bjps2g"}],"key":"UR7MwL72zq"},{"type":"list","ordered":true,"start":1,"spread":false,"position":{"start":{"line":226,"column":1},"end":{"line":267,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":226,"column":1},"end":{"line":240,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":226,"column":1},"end":{"line":230,"column":1}},"children":[{"type":"text","value":"Le yam’s (cinq chiffres identiques) est la figure la plus facile à\nreconnaître.  Spécifiez et implantez une fonction\n","position":{"start":{"line":226,"column":1},"end":{"line":226,"column":1}},"key":"EiSIjGIf2W"},{"type":"inlineCode","value":"pointsFigureYams","position":{"start":{"line":226,"column":1},"end":{"line":226,"column":1}},"key":"NwC99Y5Ifj"},{"type":"text","value":" qui, lorsqu’on lui donne en entrée un tableau\ncontenant 5 entiers, renvoie les points obtenus (","position":{"start":{"line":226,"column":1},"end":{"line":226,"column":1}},"key":"tXqo0d6BqV"},{"type":"strong","position":{"start":{"line":226,"column":1},"end":{"line":226,"column":1}},"children":[{"type":"text","value":"somme des 5\ndés + 60","position":{"start":{"line":226,"column":1},"end":{"line":226,"column":1}},"key":"uohBi9gHqT"}],"key":"rPZ3BZuB6X"},{"type":"text","value":") s’il s’agit d’un yam’s, ","position":{"start":{"line":226,"column":1},"end":{"line":226,"column":1}},"key":"OGvNSSVAAo"},{"type":"strong","position":{"start":{"line":226,"column":1},"end":{"line":226,"column":1}},"children":[{"type":"text","value":"0","position":{"start":{"line":226,"column":1},"end":{"line":226,"column":1}},"key":"tlOUSOiWwC"}],"key":"DfMOrRTEV0"},{"type":"text","value":" sinon.","position":{"start":{"line":226,"column":1},"end":{"line":226,"column":1}},"key":"UUNG4nG5jb"}],"key":"Xg0s66vyGt"},{"type":"paragraph","position":{"start":{"line":232,"column":1},"end":{"line":232,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION","position":{"start":{"line":232,"column":1},"end":{"line":232,"column":1}},"key":"G9XerQDKwv"}],"key":"VXYCosa9If"},{"type":"include","file":"yams-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN pointsFigureYams","endBefore":"END pointsFigureYams"},"children":[{"type":"code","value":"int pointsFigureYams(vector<int> des) {\n    // Variable locale :\n    int val = des[0];  // Pour vérifier que tous les dés sont égaux au premier\n\n    for (int i = 1; i < des.size(); i++) {\n        if (val != des[i]) {\n            // Si un dé est différent du premier alors pas de yams\n            return 0;\n        }\n    }\n    return val * 5 + 60 ;\n}","lang":"cpp","filename":"yams-correction.cpp","key":"XAPJ4dqwBl"}],"key":"dk5bwAO0oX"},{"type":"paragraph","position":{"start":{"line":239,"column":1},"end":{"line":239,"column":1}},"children":[{"type":"text","value":"/// END SOLUTION","position":{"start":{"line":239,"column":1},"end":{"line":239,"column":1}},"key":"HXfZ6TnoQB"}],"key":"zkfN5zGUcT"}],"key":"aDxvQoP3Qi"},{"type":"listItem","spread":true,"position":{"start":{"line":241,"column":1},"end":{"line":255,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":241,"column":1},"end":{"line":242,"column":1}},"children":[{"type":"text","value":"Complétez la liste de tests suivante avec au moins deux autres cas\nque vous jugez intéressants :","position":{"start":{"line":241,"column":1},"end":{"line":241,"column":1}},"key":"SNf9rKaJD7"}],"key":"Zc5Wt7LeSv"},{"type":"code","lang":"C++17","value":"CHECK( pointsFigureYams({4,4,4,4,4}) == 80 );\nCHECK( pointsFigureYams({1,1,1,1,1}) == 65 );","position":{"start":{"line":244,"column":1},"end":{"line":245,"column":1}},"key":"KC2gZZcxzu"},{"type":"paragraph","position":{"start":{"line":247,"column":1},"end":{"line":247,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION","position":{"start":{"line":247,"column":1},"end":{"line":247,"column":1}},"key":"XgSEbAz7gV"}],"key":"SgXsWMZsQW"},{"type":"include","file":"yams-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN pointsFigureYamsTests","endBefore":"END pointsFigureYamsTests"},"children":[{"type":"code","value":"    CHECK( pointsFigureYams({4, 4, 4, 4, 5}) == 0 );\n    CHECK( pointsFigureYams({2, 1, 1, 1, 1}) == 0 );","lang":"cpp","filename":"yams-correction.cpp","key":"KhwuFlOGnw"}],"key":"duB42eKXjc"},{"type":"paragraph","position":{"start":{"line":254,"column":1},"end":{"line":254,"column":1}},"children":[{"type":"text","value":"/// END SOLUTION","position":{"start":{"line":254,"column":1},"end":{"line":254,"column":1}},"key":"e4poNkp4iL"}],"key":"gkPyqUYWJJ"}],"key":"sCSBwUkilP"},{"type":"listItem","spread":true,"position":{"start":{"line":256,"column":1},"end":{"line":267,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":256,"column":1},"end":{"line":258,"column":1}},"children":[{"type":"text","value":"Pour simplifier la fonction ","position":{"start":{"line":256,"column":1},"end":{"line":256,"column":1}},"key":"nyMxVPBoUH"},{"type":"inlineCode","value":"pointsFigureYams","position":{"start":{"line":256,"column":1},"end":{"line":256,"column":1}},"key":"FuVgiy0ygl"},{"type":"text","value":", on peut utiliser\nles fonctions ","position":{"start":{"line":256,"column":1},"end":{"line":256,"column":1}},"key":"uWGfdxHY0t"},{"type":"inlineCode","value":"compteDes","position":{"start":{"line":256,"column":1},"end":{"line":256,"column":1}},"key":"l4tIUxi77S"},{"type":"text","value":" et ","position":{"start":{"line":256,"column":1},"end":{"line":256,"column":1}},"key":"jm3uyHd7Jb"},{"type":"inlineCode","value":"chercheDansTableau","position":{"start":{"line":256,"column":1},"end":{"line":256,"column":1}},"key":"GgI97QxGe7"},{"type":"text","value":". Donnez une\nnouvelle implantation de ","position":{"start":{"line":256,"column":1},"end":{"line":256,"column":1}},"key":"AaFdiAMTzn"},{"type":"inlineCode","value":"pointsFigureYams","position":{"start":{"line":256,"column":1},"end":{"line":256,"column":1}},"key":"Z2IDwdSzGR"},{"type":"text","value":".","position":{"start":{"line":256,"column":1},"end":{"line":256,"column":1}},"key":"gQ19XZHXNv"}],"key":"z8rs5cknWW"},{"type":"paragraph","position":{"start":{"line":260,"column":1},"end":{"line":260,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION","position":{"start":{"line":260,"column":1},"end":{"line":260,"column":1}},"key":"hySLWBZ3Ts"}],"key":"ql2Pv8BZK4"},{"type":"include","file":"yams-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN pointsFigureYams2","endBefore":"END pointsFigureYams2"},"children":[{"type":"code","value":"int pointsFigureYams2(vector<int> des) {\n    int indiceYams = chercheDansTableau(5, compteDes(des));\n\n    if (indiceYams >= 0) {\n        return (indiceYams + 1) * 5 + 60 ;\n        // +1 car l'indice d'une case du tableau correspond à la valeur - 1\n    } else {\n        return 0;\n    }\n}","lang":"cpp","filename":"yams-correction.cpp","key":"XGlH9Ba1id"}],"key":"mLp7VcJVSX"},{"type":"paragraph","position":{"start":{"line":267,"column":1},"end":{"line":267,"column":1}},"children":[{"type":"text","value":"/// END SOLUTION","position":{"start":{"line":267,"column":1},"end":{"line":267,"column":1}},"key":"G83JPg1r6p"}],"key":"MSSDRmucci"}],"key":"VQyQEsyvAp"}],"key":"NzEXmaUiEE"}],"key":"uJ824fIvOv"}],"data":{"nbgrader":{"grade":true,"locked":false,"points":0,"grade_id":"40","schema_version":3,"solution":true}},"key":"iSrZyvGuUU"},{"type":"block","position":{"start":{"line":271,"column":1},"end":{"line":271,"column":1}},"children":[{"type":"admonition","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Exercice 5 : Brelan","position":{"start":{"line":273,"column":1},"end":{"line":273,"column":1}},"key":"ZQNr2q2Omf"}],"key":"F8VCg2qXLY"},{"type":"list","ordered":true,"start":1,"spread":false,"position":{"start":{"line":275,"column":1},"end":{"line":298,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":275,"column":1},"end":{"line":289,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":275,"column":1},"end":{"line":279,"column":1}},"children":[{"type":"text","value":"À l’image de la question 2 de l’exercice précédent, proposez des\ntests pour une fonction ","position":{"start":{"line":275,"column":1},"end":{"line":275,"column":1}},"key":"tcKQwiBj5y"},{"type":"inlineCode","value":"pointsFigureBrelan","position":{"start":{"line":275,"column":1},"end":{"line":275,"column":1}},"key":"Z2sf9ttVXb"},{"type":"text","value":" qui, lorsqu’on lui\ndonne en entrée un tableau contenant 5 entiers, renvoie les points\nobtenus (","position":{"start":{"line":275,"column":1},"end":{"line":275,"column":1}},"key":"fEoNbSysFP"},{"type":"strong","position":{"start":{"line":275,"column":1},"end":{"line":275,"column":1}},"children":[{"type":"text","value":"somme des 3 dés qui forment un brelan + 10","position":{"start":{"line":275,"column":1},"end":{"line":275,"column":1}},"key":"wDXvvYJrnI"}],"key":"C9bsIpD1eX"},{"type":"text","value":") s’il\ns’agit d’un brelan, ","position":{"start":{"line":275,"column":1},"end":{"line":275,"column":1}},"key":"YlYpYN7EJO"},{"type":"strong","position":{"start":{"line":275,"column":1},"end":{"line":275,"column":1}},"children":[{"type":"text","value":"0","position":{"start":{"line":275,"column":1},"end":{"line":275,"column":1}},"key":"bbsWFPp4b4"}],"key":"DmtkMpJZtA"},{"type":"text","value":" sinon.","position":{"start":{"line":275,"column":1},"end":{"line":275,"column":1}},"key":"nu5ru7kNkm"}],"key":"eHbkJG5eLG"},{"type":"paragraph","position":{"start":{"line":281,"column":1},"end":{"line":281,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION","position":{"start":{"line":281,"column":1},"end":{"line":281,"column":1}},"key":"nWoHskSMUT"}],"key":"YcjoUHlg6t"},{"type":"include","file":"yams-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN pointsFigureBrelanTests","endBefore":"END pointsFigureBrelanTests"},"children":[{"type":"code","value":"    CHECK( pointsFigureBrelan({4, 4, 4, 1, 1}) == 22 );\n    CHECK( pointsFigureBrelan({1, 1, 4, 4, 5}) == 0 );\n    CHECK( pointsFigureBrelan({1, 1, 1, 1, 5}) == 13 );","lang":"cpp","filename":"yams-correction.cpp","key":"fEWiJEEllY"}],"key":"xriFRyFua5"},{"type":"paragraph","position":{"start":{"line":288,"column":1},"end":{"line":288,"column":1}},"children":[{"type":"text","value":"/// END SOLUTION","position":{"start":{"line":288,"column":1},"end":{"line":288,"column":1}},"key":"rcu7tmjmRJ"}],"key":"qujJQhQb8b"}],"key":"tKsImhyJ3K"},{"type":"listItem","spread":true,"position":{"start":{"line":290,"column":1},"end":{"line":298,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":290,"column":1},"end":{"line":291,"column":1}},"children":[{"type":"text","value":"Spécifiez et implantez cette fonction en vous aidant de la fonction\n","position":{"start":{"line":290,"column":1},"end":{"line":290,"column":1}},"key":"Yv403cS1RS"},{"type":"inlineCode","value":"compteDes","position":{"start":{"line":290,"column":1},"end":{"line":290,"column":1}},"key":"IIjoGk2eRp"},{"type":"text","value":".","position":{"start":{"line":290,"column":1},"end":{"line":290,"column":1}},"key":"eKSs5exZJ8"}],"key":"BS06PMQ8Vq"},{"type":"paragraph","position":{"start":{"line":293,"column":1},"end":{"line":293,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION","position":{"start":{"line":293,"column":1},"end":{"line":293,"column":1}},"key":"udokDmzROZ"}],"key":"tZFY3mTAGL"},{"type":"include","file":"yams-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN pointsFigureBrelan","endBefore":"END pointsFigureBrelan"},"children":[{"type":"code","value":"int pointsFigureBrelan(vector<int> des) {\n    // On commence par compter les dés.\n    vector<int> compte = compteDes(des);\n\n    // On regarde si on a un brelan (3 valeurs identiques au moins).\n    for (int i = 0; i < compte.size(); i ++) {\n        if (compte[i] >= 3) {\n            // Si oui, on renvoie la valeur du brelan correspondant.\n            // Rappelons que l'entier stocké en position i du tableau \"compte\"\n            // correspond au nombre de dés qui affichent (i + 1)\n            return (i + 1) * 3 + 10;\n        }\n    }\n    // En l'absence de brelan on renvoie un score nul.\n    return 0;\n}","lang":"cpp","filename":"yams-correction.cpp","key":"tsx2EfxdzQ"}],"key":"ep2bfeTQye"},{"type":"paragraph","position":{"start":{"line":298,"column":1},"end":{"line":298,"column":1}},"children":[{"type":"text","value":"/// END SOLUTION","position":{"start":{"line":298,"column":1},"end":{"line":298,"column":1}},"key":"Tv6nCIaEXB"}],"key":"uYfCFRvSwZ"}],"key":"nCYHZr6WEp"}],"key":"MvVxeuVZJv"}],"key":"Ta7yfUVh3i"},{"type":"paragraph","position":{"start":{"line":302,"column":1},"end":{"line":302,"column":1}},"children":[{"type":"delete","children":[],"key":"u7PHRPNSD1"}],"key":"UV6dRKqpDN"}],"data":{"nbgrader":{"grade":true,"locked":false,"points":0,"grade_id":"50","schema_version":3,"solution":true}},"key":"G1Chk2oNjj"},{"type":"block","position":{"start":{"line":304,"column":1},"end":{"line":304,"column":1}},"children":[{"type":"admonition","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Exercice 6 : Le jeu","position":{"start":{"line":306,"column":1},"end":{"line":306,"column":1}},"key":"rQ9YyKP3GJ"}],"key":"eHA9iNVSGg"},{"type":"list","ordered":true,"start":1,"spread":false,"position":{"start":{"line":308,"column":1},"end":{"line":368,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":308,"column":1},"end":{"line":321,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":308,"column":1},"end":{"line":313,"column":1}},"children":[{"type":"text","value":"Implantez une fonction ","position":{"start":{"line":308,"column":1},"end":{"line":308,"column":1}},"key":"xS37KxzG78"},{"type":"inlineCode","value":"pointsFigure","position":{"start":{"line":308,"column":1},"end":{"line":308,"column":1}},"key":"YKhmHQDzIM"},{"type":"text","value":" qui, étant donné un tableau\nde cinq dés et le nom d’une figure parmi «brelan» et «yams»,\nrenvoie le score associé en appelant respectivement la fonction\n","position":{"start":{"line":308,"column":1},"end":{"line":308,"column":1}},"key":"k241PGvJmV"},{"type":"inlineCode","value":"pointsFigureBrelan","position":{"start":{"line":308,"column":1},"end":{"line":308,"column":1}},"key":"DQB1D4HgAz"},{"type":"text","value":" ou la fonction ","position":{"start":{"line":308,"column":1},"end":{"line":308,"column":1}},"key":"ShAv1IW9ts"},{"type":"inlineCode","value":"pointsFigureYams","position":{"start":{"line":308,"column":1},"end":{"line":308,"column":1}},"key":"HoMIjqKcG6"},{"type":"text","value":".  Cette\nfonction doit renvoyer ","position":{"start":{"line":308,"column":1},"end":{"line":308,"column":1}},"key":"ZqhB2Zb6tL"},{"type":"strong","position":{"start":{"line":308,"column":1},"end":{"line":308,"column":1}},"children":[{"type":"text","value":"0","position":{"start":{"line":308,"column":1},"end":{"line":308,"column":1}},"key":"BOPDNxtw2i"}],"key":"NZeO5KOcv5"},{"type":"text","value":" si le nom de figure entré n’est pas\nvalide.","position":{"start":{"line":308,"column":1},"end":{"line":308,"column":1}},"key":"rlfI3brVtB"}],"key":"gya7sgJUpD"},{"type":"paragraph","position":{"start":{"line":315,"column":1},"end":{"line":315,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION","position":{"start":{"line":315,"column":1},"end":{"line":315,"column":1}},"key":"tHAhyLKoUC"}],"key":"gXA6DabsG1"},{"type":"include","file":"yams-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN pointsFigureQuelconque","endBefore":"END pointsFigureQuelconque"},"children":[{"type":"code","value":"int pointsFigure(vector<int> des, string figure) {\n    if (figure == \"brelan\") {\n        return pointsFigureBrelan(des);\n    } else if (figure == \"yams\") {\n        return pointsFigureYams(des);\n    } else if (figure == \"full\") {  // En question supplémentaire du TP\n        return pointsFigureFull(des);\n    } else if (figure == \"carre\") { // En question supplémentaire du TP\n        return pointsFigureCarre(des);\n    }  else {\n        return 0;\n    }\n}","lang":"cpp","filename":"yams-correction.cpp","key":"DgEYqBQflY"}],"key":"XM7XdnpXNK"},{"type":"paragraph","position":{"start":{"line":320,"column":1},"end":{"line":320,"column":1}},"children":[{"type":"text","value":"/// END SOLUTION","position":{"start":{"line":320,"column":1},"end":{"line":320,"column":1}},"key":"mm9vX4l1Xy"}],"key":"uXKfzojVN7"}],"key":"ccZmkCUKsX"},{"type":"listItem","spread":true,"position":{"start":{"line":322,"column":1},"end":{"line":335,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":322,"column":1},"end":{"line":327,"column":1}},"children":[{"type":"text","value":"Donner la spécification et l’implantation d’une fonction\n","position":{"start":{"line":322,"column":1},"end":{"line":322,"column":1}},"key":"j3nObzQ9VK"},{"type":"inlineCode","value":"lanceDes","position":{"start":{"line":322,"column":1},"end":{"line":322,"column":1}},"key":"rXlATdscEf"},{"type":"text","value":" qui renvoie un tableau contenant cinq entiers choisis\naléatoirement entre 1 et 6.  Pour cela vous pouvez utiliser une\nfonction ","position":{"start":{"line":322,"column":1},"end":{"line":322,"column":1}},"key":"ZHSSrpuHAr"},{"type":"inlineCode","value":"int aleaInt(int a, int b)","position":{"start":{"line":322,"column":1},"end":{"line":322,"column":1}},"key":"p2codg7qbI"},{"type":"text","value":" qui étant donné deux entiers\n","position":{"start":{"line":322,"column":1},"end":{"line":322,"column":1}},"key":"LgGMdQT8La"},{"type":"inlineMath","value":"a","position":{"start":{"line":322,"column":1},"end":{"line":322,"column":1}},"html":"<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><mi>a</mi></mrow><annotation encoding=\"application/x-tex\">a</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.4306em;\"></span><span class=\"mord mathnormal\">a</span></span></span></span>","key":"BCUn99rbWm"},{"type":"text","value":" et ","position":{"start":{"line":322,"column":1},"end":{"line":322,"column":1}},"key":"yEofXcXflY"},{"type":"inlineMath","value":"b","position":{"start":{"line":322,"column":1},"end":{"line":322,"column":1}},"html":"<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><mi>b</mi></mrow><annotation encoding=\"application/x-tex\">b</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.6944em;\"></span><span class=\"mord mathnormal\">b</span></span></span></span>","key":"v1edf4xq4W"},{"type":"text","value":" renvoie un entier aléatoire ","position":{"start":{"line":322,"column":1},"end":{"line":322,"column":1}},"key":"L44XTzLrcc"},{"type":"inlineMath","value":"n","position":{"start":{"line":322,"column":1},"end":{"line":322,"column":1}},"html":"<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><mi>n</mi></mrow><annotation encoding=\"application/x-tex\">n</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.4306em;\"></span><span class=\"mord mathnormal\">n</span></span></span></span>","key":"qCb0yUhjfS"},{"type":"text","value":" tel que ","position":{"start":{"line":322,"column":1},"end":{"line":322,"column":1}},"key":"ithKs7Y85O"},{"type":"inlineMath","value":"a \\leq n \\leq\nb","position":{"start":{"line":322,"column":1},"end":{"line":322,"column":1}},"html":"<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><mi>a</mi><mo>≤</mo><mi>n</mi><mo>≤</mo><mi>b</mi></mrow><annotation encoding=\"application/x-tex\">a \\leq n \\leq\nb</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.7719em;vertical-align:-0.136em;\"></span><span class=\"mord mathnormal\">a</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">≤</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"base\"><span class=\"strut\" style=\"height:0.7719em;vertical-align:-0.136em;\"></span><span class=\"mord mathnormal\">n</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">≤</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"base\"><span class=\"strut\" style=\"height:0.6944em;\"></span><span class=\"mord mathnormal\">b</span></span></span></span>","key":"SKoZrxypBa"},{"type":"text","value":".","position":{"start":{"line":322,"column":1},"end":{"line":322,"column":1}},"key":"VvJJQb6did"}],"key":"Jyf1XtRO0j"},{"type":"paragraph","position":{"start":{"line":329,"column":1},"end":{"line":329,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION","position":{"start":{"line":329,"column":1},"end":{"line":329,"column":1}},"key":"TBtTdv4Hfz"}],"key":"zr8hUk35Lh"},{"type":"include","file":"yams-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN lanceDes","endBefore":"END lanceDes"},"children":[{"type":"code","value":"vector<int> lanceDes() {\n    vector<int> des;\n    des = vector<int>(5);\n\n    for (int i = 0; i < des.size(); i++) {\n        des[i] = aleaInt(1, 6);\n    }\n\n    return des;\n}","lang":"cpp","filename":"yams-correction.cpp","key":"Q5OibVTaDK"}],"key":"pSSoFfqiK7"},{"type":"paragraph","position":{"start":{"line":334,"column":1},"end":{"line":334,"column":1}},"children":[{"type":"text","value":"/// END SOLUTION","position":{"start":{"line":334,"column":1},"end":{"line":334,"column":1}},"key":"ny4o0GmedI"}],"key":"JoIKkCkNo0"}],"key":"JK0FYPTizf"},{"type":"listItem","spread":true,"position":{"start":{"line":336,"column":1},"end":{"line":356,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":336,"column":1},"end":{"line":336,"column":1}},"children":[{"type":"text","value":"Complétez le squelette de code ci-dessous (3 endroits à modifier) pour :","position":{"start":{"line":336,"column":1},"end":{"line":336,"column":1}},"key":"DMOXqT5OhR"}],"key":"DjC7zCSKZE"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":338,"column":1},"end":{"line":344,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":338,"column":1},"end":{"line":338,"column":1}},"children":[{"type":"text","value":"lancer les dés;","position":{"start":{"line":338,"column":1},"end":{"line":338,"column":1}},"key":"FjenPOFxDX"}],"key":"JG1GHouf89"},{"type":"listItem","spread":true,"position":{"start":{"line":339,"column":1},"end":{"line":341,"column":1}},"children":[{"type":"text","value":"afficher le tirage au joueur et lui demander d’entrer une\nfigure ","position":{"start":{"line":339,"column":1},"end":{"line":339,"column":1}},"key":"KbIEiD7wyQ"},{"type":"strong","position":{"start":{"line":339,"column":1},"end":{"line":339,"column":1}},"children":[{"type":"text","value":"tant que","position":{"start":{"line":339,"column":1},"end":{"line":339,"column":1}},"key":"agQcU1iYyg"}],"key":"BiT1PbJdKp"},{"type":"text","value":" sa réponse est différente de «brelan»,\n«yams» et «exit»;","position":{"start":{"line":339,"column":1},"end":{"line":339,"column":1}},"key":"dP08p2iaId"}],"key":"ZwH7Eu3V7g"},{"type":"listItem","spread":true,"position":{"start":{"line":342,"column":1},"end":{"line":344,"column":1}},"children":[{"type":"text","value":"si le joueur choisit «brelan» ou «yams», afficher les points\nqu’il marque.","position":{"start":{"line":342,"column":1},"end":{"line":342,"column":1}},"key":"QsQ5XBgEcS"}],"key":"Oo5MAUHyWU"}],"key":"TNdHmDU8PI"},{"type":"include","file":"yams-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN yamsMainTrous","endBefore":"END yamsMainTrous"},"children":[{"type":"code","value":"string reponseJoueur = \"\";\nvector<int> des;\n// INSERER VOTRE CODE ICI\n\nwhile (     reponseJoueur != \"brelan\"\n            and reponseJoueur != \"yams\"\n            and reponseJoueur != \"exit\") {\n\n    // INSERER VOTRE CODE ICI\n\n    // L'instruction suivante permet d'attendre que le joueur\n    // entre une phrase dans le terminal et stocke sa réponse\n    // dans la chaine de caractères \"reponseJoueur\"\n    cin >> reponseJoueur;\n}\n// INSERER VOTRE CODE ICI","lang":"cpp","filename":"yams-correction.cpp","key":"zRBPZlGy53"}],"key":"JmQ2LNpks4"},{"type":"paragraph","position":{"start":{"line":350,"column":1},"end":{"line":350,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION","position":{"start":{"line":350,"column":1},"end":{"line":350,"column":1}},"key":"IeGLvmnP5d"}],"key":"DG3dXAckQ1"},{"type":"include","file":"yams-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN yamsMain","endBefore":"END yamsMain"},"children":[{"type":"code","value":"    string reponseJoueur = \"\";\n    vector<int> des;\n\n    des = lanceDes();\n\n    while (reponseJoueur != \"brelan\"\n           and reponseJoueur != \"yams\"\n           and reponseJoueur != \"exit\") {\n\n        afficheDes(des);\n        cout << \"Quelle figure choisissez-vous ? (brelan ou yams, exit pour quitter) \"\n             << endl;\n\n        // L'instruction suivante attend que le joueur tape\n        // une phrase au clavier, puis stocke cette phrase\n        // dans une chaine de caractères \"reponseJoueur\"\n        cin >> reponseJoueur;\n    }\n\n    if (reponseJoueur != \"exit\") {\n        cout << \"Vous marquez \" << pointsFigure(des,\n                                                reponseJoueur) << \" points !\" << endl;\n    }\n    return 0;","lang":"cpp","filename":"yams-correction.cpp","key":"RwblkO8DHb"}],"key":"lRjHvfuxPw"},{"type":"paragraph","position":{"start":{"line":355,"column":1},"end":{"line":355,"column":1}},"children":[{"type":"text","value":"/// END SOLUTION","position":{"start":{"line":355,"column":1},"end":{"line":355,"column":1}},"key":"A1I47TrTpY"}],"key":"HEWMneOyHe"}],"key":"zydoYdw5gw"},{"type":"listItem","spread":true,"position":{"start":{"line":357,"column":1},"end":{"line":368,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":357,"column":1},"end":{"line":361,"column":1}},"children":[{"type":"text","value":"Une partie de Yam’s consiste en de nombreux lancers successifs des\ndés.  Introduisez une boucle supplémentaire pour refléter ce\ncomportement tant que le joueur ne tape pas «exit».  Ajoutez un\ncalcul du score total de la partie, qui est la somme des scores de\nchaque lancer.","position":{"start":{"line":357,"column":1},"end":{"line":357,"column":1}},"key":"fECC9X3KRj"}],"key":"GjZ2yUB9Lr"},{"type":"paragraph","position":{"start":{"line":363,"column":1},"end":{"line":363,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION","position":{"start":{"line":363,"column":1},"end":{"line":363,"column":1}},"key":"CuRvqbsHEu"}],"key":"DBRwozU3Qx"},{"type":"include","file":"yams-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN yamsMainPlus","endBefore":"END yamsMainPlus"},"children":[{"type":"code","value":"    string reponseJoueur = \"\";\n    int score = 0;\n    vector<int> des;\n\n    do {\n        reponseJoueur = \"\";\n        des = lanceDes();\n\n        while (reponseJoueur != \"brelan\"\n               and reponseJoueur != \"yams\"\n               and reponseJoueur != \"exit\") {\n\n            afficheDes(des);\n            cout << \"Quelle figure choisissez-vous ? (brelan ou yams, exit pour quitter) \"\n                 << endl;\n\n            // L'instruction suivante permet d'attendre que le joueur\n            // entre une phrase dans le terminal et stocke sa réponse\n            // dans une chaine de caractères \"reponseJoueur\"\n            cin >> reponseJoueur;\n        }\n\n        if (reponseJoueur != \"exit\") {\n            int points = pointsFigure(des, reponseJoueur);\n            score += points;\n            cout << \"Vous marquez \" << points << \" points. Score total: \" << score <<\n                 endl;\n        }\n    } while (reponseJoueur != \"exit\");","lang":"cpp","filename":"yams-correction.cpp","key":"hNFCmcdtWf"}],"key":"I07tXvz3aC"},{"type":"paragraph","position":{"start":{"line":368,"column":1},"end":{"line":368,"column":1}},"children":[{"type":"text","value":"/// END SOLUTION","position":{"start":{"line":368,"column":1},"end":{"line":368,"column":1}},"key":"JmT1GsLRoo"}],"key":"dj45o9wCQu"}],"key":"swVwQ7jIiv"}],"key":"B547TjJpgD"}],"key":"O89VUMNWqh"},{"type":"paragraph","position":{"start":{"line":372,"column":1},"end":{"line":372,"column":1}},"children":[{"type":"delete","children":[],"key":"v7I4fCBcoe"}],"key":"CUbCHRrYGT"}],"data":{"nbgrader":{"grade":true,"locked":false,"points":0,"grade_id":"60","schema_version":3,"solution":true}},"key":"rHR8X9FJyk"},{"type":"block","position":{"start":{"line":374,"column":1},"end":{"line":374,"column":1}},"children":[{"type":"admonition","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Exercice 7 : ","position":{"start":{"line":376,"column":1},"end":{"line":376,"column":1}},"key":"JNfON9Uyac"},{"type":"inlineMath","value":"\\clubsuit","position":{"start":{"line":376,"column":1},"end":{"line":376,"column":1}},"html":"<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><mi mathvariant=\"normal\">♣</mi></mrow><annotation encoding=\"application/x-tex\">\\clubsuit</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.8241em;vertical-align:-0.1296em;\"></span><span class=\"mord\">♣</span></span></span></span>","key":"g8KIWwHSIY"},{"type":"text","value":" Relance","position":{"start":{"line":376,"column":1},"end":{"line":376,"column":1}},"key":"SzoBrYQcCR"}],"key":"qyWQT9e5SL"},{"type":"paragraph","position":{"start":{"line":378,"column":1},"end":{"line":379,"column":1}},"children":[{"type":"text","value":"Dans le vrai jeu de Yam’s, le joueur peut relancer jusqu’à trois fois\nun ou plusieurs dés avant de choisir une figure.","position":{"start":{"line":378,"column":1},"end":{"line":378,"column":1}},"key":"lKYV96ANpm"}],"key":"S6XwVVZZaG"},{"type":"list","ordered":true,"start":1,"spread":false,"position":{"start":{"line":381,"column":1},"end":{"line":395,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":381,"column":1},"end":{"line":392,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":381,"column":1},"end":{"line":384,"column":1}},"children":[{"type":"text","value":"Ajoutez une fonction ","position":{"start":{"line":381,"column":1},"end":{"line":381,"column":1}},"key":"ATSPKGeliU"},{"type":"inlineCode","value":"vector<int> relance(int numDe, vector<int> des)","position":{"start":{"line":381,"column":1},"end":{"line":381,"column":1}},"key":"fAjExgD7zl"},{"type":"text","value":" qui «relance» uniquement le dé numéro ","position":{"start":{"line":381,"column":1},"end":{"line":381,"column":1}},"key":"qqO5vjpECu"},{"type":"inlineCode","value":"numDe","position":{"start":{"line":381,"column":1},"end":{"line":381,"column":1}},"key":"WngXp2BQak"},{"type":"text","value":" choisi en\npremier argument et le remplace donc par un nouvel entier\naléatoire entre 1 et 6.","position":{"start":{"line":381,"column":1},"end":{"line":381,"column":1}},"key":"JLllYWND7A"}],"key":"xzSROWsk6I"},{"type":"paragraph","position":{"start":{"line":386,"column":1},"end":{"line":386,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION","position":{"start":{"line":386,"column":1},"end":{"line":386,"column":1}},"key":"shvmw5gZrO"}],"key":"H1z2o3cgbu"},{"type":"include","file":"yams-correction.cpp","literal":true,"filter":{"startAfter":"BEGIN relance","endBefore":"END relance"},"children":[{"type":"code","value":"vector<int> relance(int numDe, vector<int> des) {\n    des[numDe - 1] = aleaInt(1, 6);\n    return des;\n}","lang":"cpp","filename":"yams-correction.cpp","key":"KYsQ6OlVje"}],"key":"P2H76qocHp"},{"type":"paragraph","position":{"start":{"line":391,"column":1},"end":{"line":391,"column":1}},"children":[{"type":"text","value":"/// END SOLUTION","position":{"start":{"line":391,"column":1},"end":{"line":391,"column":1}},"key":"Vg0svH87bg"}],"key":"c9qCkbyoSE"}],"key":"OZKb8U7hXQ"},{"type":"listItem","spread":true,"position":{"start":{"line":393,"column":1},"end":{"line":395,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":393,"column":1},"end":{"line":395,"column":1}},"children":[{"type":"text","value":"Dans la boucle de jeu, ajoutez les instructions nécessaires pour\nque le joueur puisse choisir jusqu’à trois dés à relancer et les\nrelancer.","position":{"start":{"line":393,"column":1},"end":{"line":393,"column":1}},"key":"KCXsISuh4F"}],"key":"nvTwEC8qWC"}],"key":"Hrx1HORZ8h"}],"key":"btWzAVBqMB"}],"key":"HbRmw3B08Z"}],"data":{"nbgrader":{"grade":true,"locked":false,"points":0,"grade_id":"70","schema_version":3,"solution":true}},"key":"jEjp1AIe2Q"},{"type":"block","position":{"start":{"line":399,"column":1},"end":{"line":399,"column":1}},"children":[{"type":"admonition","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Exercice 8 : ","position":{"start":{"line":401,"column":1},"end":{"line":401,"column":1}},"key":"iJskHs513s"},{"type":"inlineMath","value":"\\clubsuit","position":{"start":{"line":401,"column":1},"end":{"line":401,"column":1}},"html":"<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><mi mathvariant=\"normal\">♣</mi></mrow><annotation encoding=\"application/x-tex\">\\clubsuit</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.8241em;vertical-align:-0.1296em;\"></span><span class=\"mord\">♣</span></span></span></span>","key":"LdE5xshngh"},{"type":"text","value":" Scores","position":{"start":{"line":401,"column":1},"end":{"line":401,"column":1}},"key":"AnHtdYJw4y"}],"key":"qLLOKDxfeh"},{"type":"paragraph","position":{"start":{"line":403,"column":1},"end":{"line":404,"column":1}},"children":[{"type":"text","value":"La partie de Yam’s se termine lorsqu’un joueur a marqué des points\npour toutes les figures possibles.","position":{"start":{"line":403,"column":1},"end":{"line":403,"column":1}},"key":"NrHTXBIqyn"}],"key":"cfCUhUnCFS"},{"type":"list","ordered":true,"start":1,"spread":false,"position":{"start":{"line":406,"column":1},"end":{"line":425,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":406,"column":1},"end":{"line":411,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":406,"column":1},"end":{"line":407,"column":1}},"children":[{"type":"text","value":"Ajoutez dans la fonction ","position":{"start":{"line":406,"column":1},"end":{"line":406,"column":1}},"key":"kzbt3mCuKt"},{"type":"inlineCode","value":"main","position":{"start":{"line":406,"column":1},"end":{"line":406,"column":1}},"key":"cUqS333SON"},{"type":"text","value":" un tableau de scores contenant une\ncase pour chaque figure.","position":{"start":{"line":406,"column":1},"end":{"line":406,"column":1}},"key":"fh5Ye0y0rD"}],"key":"D6LoTw3rOR"},{"type":"paragraph","position":{"start":{"line":409,"column":1},"end":{"line":410,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION\n/// END SOLUTION","position":{"start":{"line":409,"column":1},"end":{"line":409,"column":1}},"key":"hUuk3bA7K3"}],"key":"LewzCv81eU"}],"key":"xuhDLvxLzm"},{"type":"listItem","spread":true,"position":{"start":{"line":412,"column":1},"end":{"line":419,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":412,"column":1},"end":{"line":415,"column":1}},"children":[{"type":"text","value":"Lorsque le joueur choisit une figure, les points qu’il gagne\ndoivent être stockés dans la partie correspondante du tableau.\nUne fois une case du tableau remplie, elle ne peut plus être\nmodifiée.","position":{"start":{"line":412,"column":1},"end":{"line":412,"column":1}},"key":"ELHldxbqNb"}],"key":"trhiNWmzJZ"},{"type":"paragraph","position":{"start":{"line":417,"column":1},"end":{"line":418,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION\n/// END SOLUTION","position":{"start":{"line":417,"column":1},"end":{"line":417,"column":1}},"key":"uYeKLxg3YB"}],"key":"TfBU9gO5w0"}],"key":"HFPcEQMSfH"},{"type":"listItem","spread":true,"position":{"start":{"line":420,"column":1},"end":{"line":425,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":420,"column":1},"end":{"line":422,"column":1}},"children":[{"type":"text","value":"La partie se termine lorsque toutes les cases du tableau sont\nremplies. Le score du joueur correspond à la somme des cases du\ntableau.","position":{"start":{"line":420,"column":1},"end":{"line":420,"column":1}},"key":"k8BM8jAqKF"}],"key":"N2PlzoT9lx"},{"type":"paragraph","position":{"start":{"line":424,"column":1},"end":{"line":425,"column":1}},"children":[{"type":"text","value":"/// BEGIN SOLUTION\n/// END SOLUTION","position":{"start":{"line":424,"column":1},"end":{"line":424,"column":1}},"key":"PyPUfWSItR"}],"key":"uTLvjrItFU"}],"key":"Nd0aUzni4u"}],"key":"E9QI6Zo6NC"}],"key":"g4RA46Erdu"}],"data":{"nbgrader":{"grade":true,"locked":false,"points":0,"grade_id":"80","schema_version":3,"solution":true}},"key":"QStjJEFgzt"}],"key":"NFnmFhRUZO"},"references":{"cite":{"order":[],"data":{}}},"footer":{"navigation":{"prev":{"title":"cours-collections","url":"/cours-collections","group":"Informations générales"},"next":{"title":"jupyter-jeter-sa-souris","url":"/jupyter-jeter-sa-souris","group":"Informations générales"}}},"domain":"http://localhost:3001"}