Vous devez traiter les deux exercices ci-dessous en binôme dans l’ordre.
(Sauf la question 4 de l’exercice 1 il faut faire en dernier.) Vous pouvez demander à l’aide de votre professeur et utiliser votre cours, mais pas sur Internet ni avec un autre binôme. À la fin des deux heures, vous remettez un document au format. Contenant les codes des programmes proposés. Ce document porte vos deux noms. Vous remettez également une copie de papier contenant les réponses aux questions posées.
Exercice 1 (Un jeu à deux joueurs) This but is to a self game. S’il reste du temps à la fin, sur cherchera ensuite à écrire un programme permettant de jouer automatiquement à cejeu. On dispose de 30 jetons répartis en deux tâches A et B. A tout instant, note a (resp. B) le nombre de jetons du tas A (resp. B). Initialement, le joueur choisit la répartition des jetons, c’est-à-dire les valeurs de a et de b. A chaque tour, le joueur choisit d’enlever deux jetons de l’un des deux et d’ajouter un seul jeton à l’autre. Ainsi, il doit arrêter la lettre du départ. The game is about to the one of two situations (a, b) = (1,0) ou (a, b) = (0,1), c’est-à-dire à une situation où il n’y a plus qu’un seul jeton dans l’un des deux tas. Voici un exemple de partie qui se termine par une défaite.
(a) Pourquoi suffit-il de demander à l’utilisateur uniquement la valeur initiale de la répartition initiale des jetons?
-
(b) Ecicre une fonction nommée lancerlejeu () afficher un message d’accueil puis demander à l’installateur de choisir la valeur initiale d’un compris entre 0 et 30, vérifie que cette valeur est correcte, et renvoie les nombres à un correspondant aux compositions initiales des tas. Si le joueur n’écrit pas un nombre entre 0 et 30, alors le redemandera à nouveau une valeur de correcte, jusqu’à ce qu’il réponde correctement.
-
Écrire une fonction nommée épuisée (a, b, tas) qui prend en arguments deux entiers et qui décrivent l’état de la deuxième et la chaîne de caractères nommée t’as qui indique le numéro d’un tas.
• Cette fonction doit : Vérifier que le tas choisi contient bien au moins 2 jetons
• Le cas échéant, renvoyez les nouvelles valeurs de a et b
• Dans le cas contraire, affichez un message d’erreur à renvoyer a et b sans les modifier.
Par exemple, deplacejetons (O, 30, "B") renvoie (1,28) tandis que deplacejetons (0, 30, "A") fiche "Impossible" puis retour (0,30)
-
Écrire une fonction nommée jeudestas () qui permet de jouer à ce jeu.
-
Question difficile facultative. À ne traiter que si sur un déjà traité les deux exercices. On aimerait créer un programme qui joue tout seul à ce jeu.
(a) On considère la fonction ci-dessous. def toto (a, b): 1 si a> b: 2 3 return 'A' sinon 4 return 'B' 5 Cette fonction prend un argument deux numéros entiers et une lettre 'A' ou 'B' Elle permet donc de jouer automatiquement à ce jeu. On dira qu’elle implémente une stratégie. En analysant le code, comment peut-on décrire cette stratégie de jeu?
(b) Créer une fonction nommée jeudestas2 (IA) qui prend en argument une fonction et qui se joue automatiquement en appliquant la fonction IA pour choisir ce qu’il faut faire à chaque tour de jeu. Tester votre code avec la fonction totale et vérifier ainsi votre réponse à la question précédente.
© Une stratégie pour jouer à ce jeu consiste toujours à retirer des jetons au plus petit, si c’est possible. Create a function as a new entry new one and a new one 'a' B 'suivant qu’il a été déplacé dans la tâche' A 'ou' a la tâche 'B' suivant cette stratégie.
(d) Proposez une stratégie plus intelligente que cette stratégie et créez une fonction qui permet de la pratiquer.