\include{base}
\newcommand{\motscles}[1]{\fbox{\textbf{#1}}}
\renewcommand{\thesection}{\Roman{section}}

\newcommand{\texte}{
\setcounter{section}{0}
\pagestyle{empty} \noindent{\Large TD N$^o~1$ TSI SOA 2007-2008}\vskip0.1cm
\hrule
\vskip 0.1cm
Dans ce TD on va rechercher des matrices magiques d'ordre $n\in\N^*$. Ce sont des matrices $n\times n$ comportant une et une seule fois les entiers de $1$ à $n^2$ et dont la somme des éléments diagonaux, la somme des éléments sur chaque ligne et la somme des éléments sur chaque colonne donne toujours le même nombre $S$.
\section{Préliminaire théorique}
\begin{enumerate}
\item Rappeller en fonction de $n$ la valeur de la somme $1+2+3+\dots+n^2$.
\item Si $M$ est une matrice magique que vaut forcément $S$~?
\item Montrer qu'il n'existe pas de matrice magique d'ordre $2$.
\end{enumerate}
\section{Programmation}
\begin{enumerate}
\item \'Ecrire une procédure $Ligne(M,k)$ qui renvoie la somme de la $k$\ieme \ ligne de $M$.
\item \'Ecrire une procédure $Colonne(M,k)$ qui renvoie la somme de la $k$\ieme\ colonne de $M$.
\item \'Ecrire une procédure $Diag1(M)$ qui renvoie la somme de la première diagonale de $M$.
\item \'Ecrire une procédure $Diag2(M)$ qui renvoie la somme de la deuxième diagonale de $M$.
\item \'Ecrire une procédure $Magique(M)$ qui renvoie un booléen (true ou false) signifiant que la matrice est magique ou non. On ne testera pas si les éléments de la matrice sont bien les entiers de $1$ à $n^2$.
\end{enumerate}
\section{Programmation avancée}
On suppose qu'on dispose d'une procédure $combi(n,k)$ qui fabrique les $n^2!$ permutations, en renvoyant pour chaque $k$ compris entre $0$ et $n^2!-1$ un tableau contenant  une permutation  différente des nombres entiers de $1$ à $n^2$.

\'Ecrire alors une procédure qui donne toutes les matrices magiques d'ordre $n$.
}
\begin{document}
\texte
\vfill
\hrule
\vfill
\texte
\end{document}
