Travaux dirigés n˚6 Tableaux à deux dimensions

publicité
Licence Informatique
Info0101 – 2012/2013
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.
2012/2013 – Travaux dirigés n˚6
page 2/2
Téléchargement