Licence Informatique Info0101 – 2013/2014 Travaux dirigés n˚6 Tableaux à deux dimensions Exercice 1 (Les matrices) Dans cet exercice, les matrices sont représentées par des tableaux à 2 dimensions. 1˚) Écrivez une fonction prenant en paramètre une largeur et une hauteur, et retournant une matrice de ces dimensions. 2˚) Écrivez une fonction prenant en paramètre n, et retournant la matrice identité In . 3˚) Écrivez une fonction prenant en paramètre une matrice m, deux indices i et j, et inversant les deux lignes i et j de m. Quelle modifications sont à apporter pour inverser deux colonnes ? 4˚) Écrivez une fonction prenant en paramètre deux matrices et retournant la somme de ces deux matrices. Quelles conditions sont à poser sur les matrices ? 5˚) Même chose avec la multiplication de deux matrices passées en paramètre. Exercice 2 (Parcours d’une grille) On considère une grille de 10 x 10 cases, chaque case contenant un caractère. Les cases sont numérotées par un numéro de ligne et un numéro de colonne. 1˚) On désire lire le contenu de la grille dans l’ordre usuel : ligne par ligne de haut en bas et sur chaque ligne de gauche à droite. a) Quelle sera la première case ? La dernière case ? b) Si (l, c) est la case courante, quelle sera la case suivante ? c) Écrivez l’algorithme de parcours complet. 2˚) En réalité, la grille contient un texte écrit en ancienne langue étrusque : arrivé à la fin d’une ligne, on change de sens pour la ligne suivante. a) Quelle sera la première case ? La dernière case ? b) Si (l, c) est la case courante, quelle sera la case suivante ? c) Récrivez l’algorithme de parcours complet. 3˚) Fatale erreur : ce sont des hiéroglyphes égyptiens ! Les anciens égyptiens écrivaient souvent sur des colonnes de haut en bas et la première colonne était celle de droite. a) Quelle sera la première case ? La dernière case ? b) Si (l, c) est la case courante, quelle sera la case suivante ? c) Récrivez l’algorithme de parcours complet. 4˚) Et si, finalement, le texte était écrit en spirale ? Écrivez l’algorithme. Licence Informatique Info0101 Exercice 3 (Tic-tac-toe) L’article de Wikipédia décrit les règles du jeu comme suit : “Le Tic-tac-toe se joue sur une grille carrée de 3x3 cases. Deux joueurs s’affrontent. Ils doivent remplir chacun à leur tour une case de la grille avec le symbole qui leur est attribué : O ou X. Le gagnant est celui qui arrive à aligner trois symboles identiques, horizontalement, verticalement ou en diagonale.”. 1˚) Nous souhaitons écrire l’algorithme du jeu du Tic-tac-toe. Pour cela, on souhaite utiliser un tableau à 2 dimensions. À votre avis, quel est le type de ce tableau ? 2˚) On suppose disposer de la fonction gagne(grille : tableau de tableaux d’entiers) : entier qui retourne 0 si aucun joueur n’a gagné, 1 si c’est le joueur 1 qui a gagné et 2 si c’est le joueur 2. Écrivez l’algorithme principal du jeu. 3˚) Nous souhaitons écrire la fonction gagne. a) Combien y’a-t-il de combinaisons gagnantes dans ce jeu ? b) Proposez un algorithme simple pour vérifier si la première ligne de la grille contient 3 symboles identiques. c) Généralisez cet algorithme pour toutes les lignes. d) Idem pour les colonnes. e) À l’aide des questions précédentes, écrivez la fonction gagne. N’oubliez pas de vérifier les 2 diagonales ! 4˚) Écrivez le jeu du Tic-tac-toe en Java. Exercice 4 (Le jeu des petits carrés) Le jeu des petits carrés se joue à deux joueurs. Le but du jeu est le suivant : à chaque tour, chaque joueur trace un petit trait suivant le quadrillage de la feuille afin de fermer des carrés. Le gagnant est celui qui en a fermé le plus. Pour cet exercice, on choisit de représenter la grille de jeu sous la forme d’un tableau à 2 dimensions. Ce tableau contient les informations concernant les carrés (déjà formés ou non) et les traits (tracés ou non). Si une case correspondant à un carré est à 0, le carré n’est pas encore formé. Dans le cas contraire, la case est à 1. De même, pour les cases correspondant aux traits. 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 Représentation du jeu 0 0 0 0 0 1 0 0 1 0 Cases pour les carrés . 0 . 1 1 1 0 1 Cases pour les traits . . | . — | . — Le jeu . . | . 1˚) En prenant un quadrillage de l ×h, combien peut-on faire de carrés ? Écrivez un algorithme permettant de parcourir uniquement les cases correspondant aux carrés. 2˚) Écrivez l’algorithme permettant de mettre à jour la valeur de la case (i,j) correspondant à un carré, en fonction de ses traits. 3˚) Écrivez l’algorithme permettant de mettre à jour les cases correspondant aux carrés lorsqu’un trait est tracé sur la case (i,j) (ie lorsque la case (i,j) est mise à 1). 4˚) Écrivez le jeu des petits carrés en Java. 2013/2014 – Travaux dirigés n˚6 page 2/2