{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exercices du livre - Chapitre 8\n",
    "\n",
    "---"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Exercice 1 ✓✓\n",
    "\n",
    "  Un domino est une pièce constituée de deux extrémités comportant chacune un dessin de zéro (vide) à six points. Un jeu de dominos comprend 28 pièces composées des combinaisons des valeurs ci-dessus. L'objectif est d'apposer sur la table les pièces en appariant les extrémités de même valeur.\n",
    "  \n",
    "  ![dominos](../data/Dominos_40.png)\n",
    "    \n",
    "  Créer une classe `Domino` dont chaque instance (chaque domino) a deux attributs correspondant aux valeurs de ses deux extrémités (que l'on fournira à la construction). Pour cette classe, créer une méthode `appariement` qui permet d'évaluer si un domino peut être apparié par une de ses extrémités avec un autre domino. Si l'appariement est possible, la méthode renvoie la valeur de l'extrémité par laquelle il peut se faire. S'il n'est pas possible, la méthode renvoie **`None`**.\n",
    "    \n",
    "  Définir une liste de pioche contenant l'ensemble des dominos. Mélanger celle-ci à l'aide de la méthode `shuffle()` du module standard `random`. Prendre les sept premiers dominos de la pioche pour le joueur 1, et les sept suivants pour le joueur 2 (supprimer ces dominos de la pioche). \n",
    "    \n",
    "  Pour le premier domino du joueur 1, afficher tous les dominos du joueur 2 qui peuvent être appariés."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [],
   "source": [
    "# Exercice 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Exercice 2 ✓✓\n",
    "\n",
    "  Le jeu de Marienbad, appelé également « jeu des allumettes », nécessite deux joueurs et 16 allumettes réparties en quatre rangées de 1, 3, 5, 7 allumettes.\n",
    "  \n",
    "Chacun à son tour, les joueurs piochent dans une seule rangée le nombre d'allumettes souhaité. Le joueur qui prend la dernière allumette *perd* la partie.\n",
    "\n",
    "  Votre programme oppose deux joueurs, disons Ève et Gus. Au cours du jeu, l'affichage se présentera, alternativement pour Ève et Gus, sous la forme suivante :\n",
    "  \n",
    "```txt\n",
    "~~~~~~~~~~~~~~~~~~~~~~~~~\n",
    "rangée     : (1, 2, 3, 4)\n",
    "allumettes : [1, 1, 5, 7]\n",
    "~~~~~~~~~~~~~~~~~~~~~~~~~\n",
    "C'est à Gus de jouer :\n",
    "    Numéro de la rangée           : 4\n",
    "    Nombre d'allumettes à enlever : 6\n",
    "\n",
    "~~~~~~~~~~~~~~~~~~~~~~~~~\n",
    "rangée     : (1, 2, 3, 4)\n",
    "allumettes : [1, 1, 5, 1]\n",
    "~~~~~~~~~~~~~~~~~~~~~~~~~\n",
    "C'est à Ève de jouer :\n",
    "```\n",
    "\n",
    "Définissez une classe `Marienbad` avec son constructeur qui reçoit un tuple contenant les noms des deux joueurs, une méthode spéciale `__str__()` qui retourne la représentation de l'état du jeu (comme ci-dessus), une méthode `verifie(t, n)` qui renvoie un booléen vérifiant que l'on peut retirer `n` allumettes du tas `t`, une méthode `maj(t, n)` qui met à jour les rangées après chaque tour valide et une méthode `termine()` qui renvoie `True` si le jeu est terminé, `False` sinon.\n",
    "\n",
    "  Tant que le jeu n'est pas terminé, le programme principal demande au joueur en cours le nombre d'allumettes qu'il veut enlever d'un certain tas, fait la mise à jour des tas d'allumettes et affiche l'état du jeu."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Exercice 2"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
