Dans un parcours de graphe G=(X, ?), il arrive souvent que ...
TD10
Calcul numérique (avec Maple)
Licence 1 SMS Math Info, Math Physique 2005-2006
tableaux
Question 1 :
Ecrire la procédure de manière itérative et récursive, qui vérifie qu’un mot est un palindromes. Exemple de palindrome : « LAVAL », « ELU PAR CETTE CRAPULE »
palindrome := proc(s::string)
local pal ::boolean,
i ::integer,
iMax ::integer,
taille::integer;
i := 1;
pal := true;
taille := length(s);
iMax := floor(taille/2);
while ((i decalageGauche := proc(tab::array)
local i ::integer,
taille::integer;
taille := nops(convert(tab,'list')); #Le nops donne 1 sur un array
for i from 1 to taille-1
do
tab[i] := tab[i+1];
od:
tab[taille] := 0;
return tab;
end:
t := array([1, 2, 3, 4, 5]);
decalageGauche(t):
convert(t,'list');
[pic]
[pic]
Question 3 :
Ecrire la procédure qui effectue un décalage d’une case à droite d’un tableau d’entier.
> decalageDroite := proc(tab::array)
local i ::integer,
taille::integer;
taille := nops(convert(tab,'list')); #Le nops donne 1 sur un array
i:=taille;
while (i>1)
do
tab[i] := tab[i-1];
i:=i-1;
od:
tab[1] := 0;
return tab;
end:
t := array([1, 2, 3, 4, 5]);
decalageDroite(t):
convert(t,'list');
[pic]
[pic]
Question 4 :
Ecrire la procédure qui effectue la somme de tous les éléments d’une matrice.
sommeMat := proc(m::array)
local nbLi ::integer,
nbCo ::ineteger,
i ::integer,
j ::integer,
somme::numeric;
nbLi := nops(convert(m, 'listlist')); #Le nops donne 1 sur un array
nbCo := nops(convert(m,'listlist')[1]); #Le nops donne 1 sur un array
somme := 0;
for i from 1 to nbLi
do
for j from 1 to nbCo
do
somme := somme+m[i,j];
od:
od:
return somme;
end:
Question 5 : Sudoku
Le sudoku, est un jeu en forme de grille défini en 1979 et inspiré du carré latin ainsi que du problème des 36 officiers de Leonhard Euler. Le but du jeu est de remplir cette grille avec des chiffres allant de 1 à 9 en respectant certaines contraintes, quelques chiffres étant déjà disposés dans la grille. La grille de jeu est un carré de neuf cases de côté, subdivisé en autant de carrés identiques, appelés régions (voir figure). La règle du jeu est simple : chaque ligne, colonne et région ne doit contenir qu'une seule fois tous les chiffres de un à neuf. Formulé autrement, chacun de ces ensembles doit contenir tous les chiffres de un à neuf. Ci dessous, une grille de sudoku rempli.
On souhaite écrire une procédure qui vérifie qu’une grille de sudoku à bien été rempli. Pour ce faire :
a) Ecrire une procédure qui vérifie qu’une ligne d’une matrice est bien rempli.
b) Ecrire une procédure qui vérifie qu’une colonne d’une matrice est bien rempli.
c) Ecrire une procédure qui vérifie qu’une région est bien rempli.
d) Ecrire une procédure qui vérifie qu’une grille de sudoku est bien rempli.
verifLigne := proc(M::array, ligne::integer)
local correct::boolean,
nbCo ::integer,
coeff ::integer,
ens ::set,
colonne::integer;
nbCo := nops(convert(M,'listlist')[1]); #Le nops donne 1 sur un array
colonne := 1;
correct := true;
ens := NULL;
while (correct and (colonne ................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.