WikiPrépaLivrets

ENS Informatique Fondamentale (Maths Info) MP PC 2002Sujet

Pas encore noté

Téléchargements

  • Corrigé : pas encore disponible
  • Rapport du jury : non disponible

Ces sujets peuvent vous intéresser

Pas encore de corrigé pour ce sujet : voici des sujets proches corrigés.

Lecture du sujet en ligne

L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.
Afficher ou masquer la section

Filières MP et PC (groupe I)
(Epreuve commune aux ENS de Paris et Lyon)

MATHEMATIQUES-INFORMATIQUE

Durée : 4 heures
L'usage de toute calculatrice est interdit.

Autour des carrés latins

Notations

On note ℕ l'ensemble des entiers naturels, ℤ l'ensemble des entiers relatifs, ℕ^∗ = ℕ∖{0} et, pour tout n ∈ ℕ^∗, N_n l'ensemble des entiers de 0 à n − 1. Si p ∈ ℤ et q ∈ ℕ^∗, on note p÷q et p mod q le quotient et le reste dans la division euclidienne de p par q, c'est-à-dire les uniques entiers tels que 0 ≤ pmodq < q et q(p÷q) + (pmodq) = p. Si p ∈ ℤ et q ∈ ℤ, on note p ∧ q le plus grand diviseur commun ( pgcd ) de p et de q lorsque ( p, q ) ≠ (0, 0) et, par convention, 0 ∧ 0 = 0. Par définition, le pgcd est donc un entier strictement positif sauf si (p, q) = (0, 0). On définit de façon similaire le pgcd d'un ensemble d'entiers. On rappelle que, pour p ∈ ℤ et q ∈ ℕ^∗, les quatre propriétés suivantes sont équivalentes : (i) p ∧ q = 1, (ii) il existe (u, v) ∈ ℤ^2 tel que pu + qv = 1 (propriété de Bezout), (iii) ∃u ∈ ℤ tel que pumodq = 1, (iv) pmodq est un générateur du groupe défini par N_q muni de l'addition modulo q.
Une matrice A de taille n × m à coefficients dans S est une famille [A(i, j)]_((i, j) ∈ N_n × N_m) d'éléments de S. Une matrice carrée de taille n est une matrice de taille n × n. La ligne d'indice i (resp. la colonne d'indice j ) de A est la famille [A(i, j)]_(j ∈ N_m) (resp. [A(i, j)]_(i ∈ N_n) ). Attention : les lignes et colonnes sont donc indexées à partir de 0 et non à partir de 1 , ceci pour simplifier les notations de certaines parties du sujet. De même, on numérote les composantes d'un n-uple x⃗ ∈ ℤ^n de 0 à (n − 1) et on note x_i sa composante d'indice i.

Partie 1. Quelques propriétés des matrices carrées entières

Une matrice est entière si elle est à coefficients dans ℤ. On dit qu'une matrice est unimodulaire si elle est carrée, entière et si son déterminant vaut 1 ou -1 . Avec l'addition et le produit usuels sur les matrices, l'ensemble des matrices entières carrées de taille n forme un anneau M_n(ℤ) dont l'élément unité est noté I.

Forme d'Hermite d'une matrice carrée entière

On note E_(i, j) la matrice dont tous les coefficients sont nuls sauf E_(i, j)(i, j) = 1. Les matrices P_(i, j) = I − E_(i, i) − E_(j, j) + E_(i, j) + E_(j, i), S_i = I − 2E_(i, i) et, lorsque i ≠ j, R_(i, j) = I − E_(i, j) sont appelées matrices élémentaires.
Question 1.1. Quel est l'effet, sur une matrice A ∈ M_n(ℤ), de la multiplication à droite par une matrice élémentaire? Quel est le déterminant des matrices élémentaires? Ont-elles un inverse dans M_n(ℤ) ?
Question 1.2. Que fait l'algorithme de la figure 1 pour une matrice A ∈ M_n(ℤ) ? Montrer qu'il se termine toujours et que, quel que soit i, le pgcd de la ligne d'indice i de A n'est pas modifié par l'algorithme.
Question 1.3. Soit A ∈ M_n(ℤ). Montrer, en donnant un algorithme inspiré de celui de la question précédente, qu'il existe une matrice H ∈ M_n(ℤ) triangulaire inférieure, à diagonale positive ou nulle, et une matrice unimodulaire Q telles que A = HQ. Montrer que si le déterminant de A est non nul, on peut de plus imposer 0 ≤ H(i, j) < H(i, i) pour tout j < i.
Pour $j$ de 0 à $n-1$
    Si $(A(0, j)<0) A \leftarrow A S_{j} ;$
FinPour
$C \leftarrow\left\{j \in \mathcal{N}_{n} \mid A(0, j) \neq 0\right\} ;$
Tant que ( $C \neq \emptyset$ )
    $m \leftarrow \min \{A(0, j) \mid j \in C\} ;$
    Soit $k \in C$ tel que $A(0, k)=m$;
    $A \leftarrow A P_{0, k}$;
    Pour $j$ de 1 à $n-1$
        $q \leftarrow A(0, j) \div m ;$
        $A \leftarrow A\left(R_{0, j}\right)^{q}$;
    FinPour
    $C \leftharpoondown\left\{j \in \mathcal{N}_{n} \backslash\{0\} \mid A(0, j) \neq 0\right\} ;$
FinTantQue
Fig. 1 - Algorithme de la question 1.2.
Question 1.4. Montrer que toute matrice unimodulaire est produit de matrices élémentaires et que l'ensemble des matrices unimodulaires de taille n est l'ensemble des inversibles de M_n(ℤ).
Question 1.5. Montrer que si le déterminant de A est non nul, il existe une unique décomposition A = HQ vérifiant toutes les propriétés de la question 1.3. On dit alors que la matrice H est la forme d'Hermite de A.

Équations en nombres entiers et opérations «modulo»

Étant donné un n-uple a⃗ ∈ (ℕ^∗)^n, on note N_(a⃗) = {x⃗ ∈ ℤ^n|∀i, 0 ≤ x_i < a_i}. Si A ∈ M_n(ℤ), on définit l'application A_(a⃗) : ℤ^n → N_(a⃗) par A_(a⃗)(x⃗) = (Ax⃗)moda⃗ où l'opération modulo est calculée composante par composante, c'est-à-dire ∀i, (A_(a⃗)(x⃗))_i = (Ax⃗)_i mod a_i. Dans la suite, on suppose que A ∈ M_n(ℤ) et a⃗ ∈ (ℕ^∗)^n sont donnés et on cherche des conditions pour que la restriction de A_(a⃗) à un ensemble de la forme N_(c⃗) soit une bijection de N_(c⃗) dans N_(a⃗). On note 0→ = (0, …, 0).
Question 1.6. Soit c⃗ ∈ (ℕ^∗)^n. Montrer que la restriction de A_(a⃗) à N_(c⃗) est injective si et seulement si 0→ est l'unique solution de Ax⃗moda⃗ = 0→ avec x⃗ ∈ ℤ^n et ∀i, − c_i < x_i < c_i.
On note D = diag(a⃗) la matrice de M_n(ℤ), diagonale, définie par ∀i, D(i, i) = a_i. On vérifie alors aisément que Ax⃗moda⃗ = 0→ si et seulement s'il existe y⃗ ∈ ℤ^n tel que Ax⃗ = Dy⃗.
Question 1.7. On suppose pour commencer que c⃗ et a⃗ sont quelconques dans (ℕ^∗)^n mais que A est unimodulaire. Montrer que si la diagonale de la forme d'Hermite de A^(− 1)D est égale à c⃗ alors la restriction de A_(a⃗) à N_(c¯) est une bijection de N_(c¯) dans N_(a¯).
Question 1.8. On suppose à présent que A est quelconque mais que c⃗ = a⃗ = (a, …, a). On a alors D = aI. En utilisant la forme d'Hermite de A, montrer que si det(A) ∧ a = 1 alors la restriction de A_(a⃗) à N_(c⃗) est injective. Montrer que si A_(a⃗) est surjective, il existe deux matrices B ∈ M_n(ℤ) et C ∈ M_n(ℤ) telles AB = I + aC. En déduire que det(A) ∧ a = 1. Conclure.

Tournez la page S.V.P.

Partie 2. Quelques propriétés des carrés latins

Carrés latins et groupes

On dit qu'une matrice carrée de taille n à coefficients dans N_n est un carré latin de taille n si chaque élément de N_n apparaît exactement une fois dans chaque ligne et dans chaque colonne. On dit que deux carrés latins A et B sont équivalents si on peut passer de l'un à l'autre par renommage bijectif des éléments et permutation des lignes et des colonnes, c'est-à-dire si A et B sont de même taille n et s'il existe trois permutations f, g et h de N_n telles que pour tout (i, j) ∈ N_n × N_n, B(i, j) = f(A(g(i), h(j))). Cette relation sur les carrés latins est évidemment une relation d'équivalence.
Un ensemble muni d'une loi de composition interne est appelé magma. À un carré latin A de taille n, on associe le magma (N_n, ⋆) où la loi ⋆ est donnée par x⋆y = A(x, y).
Question 2.1. Construire un carré latin dont le magma associé n'a pas d'élément neutre. Montrer que pour tout carré latin, il existe un carré latin équivalent dont le magma associé possède 0 comme élément neutre. Combien y a-t-il de classes d'équivalence de carrés latins de taille n pour n ≤ 3 ? De carrés latins de taille n pour n ≤ 3 ?
Question 2.2. Existe-t-il des carrés latins de n'importe quelle taille?
Question 2.3. Soit ( G, ∙ ) un magma possédant un élément neutre et soit ( H, ⋆ ) un magma dont la loi ⋆ est associative. On suppose qu'il existe une bijection f de G dans H et deux bijections g et h de H dans G telles que pour tout (x, y) ∈ H × H, x⋆y = f(g(x)∙h(y)). Montrer que pour tout (x, y, z) ∈ H × H × H, g(f(g(x)∙h(y)))∙h(z) = g(x)∙h(f(g(y)∙h(z))). En déduire que hfg = gfh, puis montrer que hfg est un isomorphisme, c'est-à-dire que pour tout (x, y) ∈ H × H, hfg(x⋆y) = hfg(x)∙hfg(y).
Question 2.4. Donner un représentant par classe d'équivalence de carrés latins de taille 4. Construire un carré latin de taille minimale qui ne soit pas équivalent à un carré latin associé à un groupe. Dans les deux cas, ne pas oublier de justifier avec soin.

Carrés eulériens et carrés magiques

Étant donnés deux carrés latins A et B de taille n, on définit la matrice C = (A, B) à coefficients dans N_n × N_n par C(i, j) = (A(i, j), B(i, j)). Si tous les coefficients de C sont distincts, on dit que A et B sont orthogonaux et que C est un carré eulérien de taille n.
Question 2.5. Soient A et B deux carrés latins de taille n. Pour tout j ∈ N_n, on note σ_j la permutation telle que, pour tout i, B(i, σ_j(i)) = j. Montrer que A et B sont orthogonaux si et seulement si, quel que soit j, tous les A(i, σ_j(i)) sont distincts. En déduire qu'un carré latin associé à un groupe cyclique d'ordre pair n'a pas d'orthogonal. (On pourra considérer la somme, modulo 2p, de tous les éléments de N_(2p).)
Un carré latin de taille n est diagonal si tous les éléments A(i, i) de la diagonale sont distincts, ainsi que tous les éléments A(i, n − 1 − i) de l'anti-diagonale. Un carré eulérien ( A, B ) est diagonal si A et B sont diagonaux. Une matrice carrée de taille n, à coefficients dans N_(n^2), est un carré magique de taille n si tous ses coefficients sont distincts et si toutes les sommes des coefficients d'une ligne, d'une colonne, de la diagonale et de l'anti-diagonale sont égales ( ∃k ∈ ℕ, ∀i, ∑_j A(i, j) = k, ∀j, ∑_i A(i, j) = k et ∑_i A(i, i) = ∑_i A(i, n − i − 1) = k).
Question 2.6. Montrer que l'on peut construire un carré magique de taille n à partir d'un carré eulérien diagonal de taille n.
Question 2.7. Pour n ≤ 4, déterminer s'il existe des carrés eulériens, des carrés eulériens diagonaux et des carrés magiques de taille n. En cas de réponse positive, en donner un exemple.
Question 2.8. Donner une condition nécessaire et suffisante sur a ∈ ℤ et b ∈ ℤ pour que la matrice de taille n définie par A(i, j) = (ai + bj)modn soit un carré latin. Même question pour un carré latin diagonal. Soient a, b, c, d dans ℤ. Montrer que les deux carrés latins définis par A(i, j) = (ai + bj)modn et B(i, j) = (ci + dj)modn sont orthogonaux si et seulement si (ad − bc) ∧ n = 1. (On pourra raisonner directement en introduisant u ∈ N_n tel que (c + du)modn = 0 ou bien faire le lien avec la question 1.8.)
Question 2.9. Montrer qu'il existe un carré magique de taille n pour tout entier n qui n'est multiple ni de 2 ni de 3 . Donner un carré magique de taille 5.

Partie 3. Hyper-rectangles latins

On dit qu'une application f de E dans F définit une multi-bijection de E^′ dans F, pour E^′ ⊂ E, si tous les éléments de F ont le même nombre d'antécédents par f dans E^′. Un tableau de dimension d ∈ ℕ, d ≥ 2, de taille c⃗ ∈ (ℕ^∗)^d, dans un ensemble S, est une application de N_(c⃗) dans S. Un tableau T est un hyper-rectangle latin si ∀i, 0 ≤ i < d, ∀k, 0 ≤ k < c_i, l'application T définit une multi-bijection de N_(c⃗)(i, k) = {x⃗ ∈ N_(c⃗)|x_i = k} dans S. Autrement dit, un tableau peut être vu comme la généralisation d'une matrice en dimension d et un tableau est un hyper-rectangle latin si dans tout sous-tableau obtenu en fixant un indice, tous les éléments de S apparaissent le même nombre de fois. Lorsque toutes les multi-bijections sont des bijections (chaque élément apparaît alors une et une seule fois dans chacun des sous-tableaux), on dit que le tableau est un hyper-cube latin. En dimension 2 , lorsque S = N_p, les hyper-cubes latins sont de taille c⃗ = (p, p) et on retrouve la notion de carré latin de taille p.

Étude des tailles compatibles élémentaires

On s'intéresse pour commencer au problème suivant : comment répartir n boules identiques dans d boîtes distinctes de sorte que chaque boîte contienne au plus m boules et qu'au moins c boîtes en contiennent exactement m.
Question 3.1. Montrer qu'il existe une telle répartition si et seulement si 0 ≤ c ≤ d et cm ≤ n ≤ dm. Expliquer, en justifiant avec précision, ce que fait la procédure P(n, m, c, d) de la figure 2 lorsque d ≥ 1, 0 ≤ c ≤ d et cm ≤ n ≤ dm. (Par convention, une boucle «Pour i de u à v » n'est pas exécutée si v < u.)
Pour qu'il existe un hyper-rectangle latin de taille c⃗, de dimension d, dans un ensemble de cardinal p, il faut évidemment que, pour tout i, ∏_(j ≠ i)c_j soit un multiple de p. Lorsque c⃗ vérifie cette propriété, on dit que c⃗ est une taille compatible avec p. Lorsque, de plus, il n'existe pas de taille b⃗ ≠ c⃗, compatible avec p, telle que ∀i, c_i = k_i b_i avec k_i ∈ ℕ^∗, on dit que c⃗ est élémentaire pour p. L'objet des questions suivantes est de générer toutes les tailles élémentaires pour p.
Étant donnés u et v dans ℕ^∗, on définit l'occurrence de v dans u comme le plus grand entier naturel r tel que v^r divise u.

Tournez la page S.V.P.

$\mathrm{P}(n, m, c, d)\{$
    Si $(d=1)$
        boîte $[d-1]=n$;
    Sinon
        Pour $i$ de $\max (0, n-m(d-1))$ à $\min (m-1, n-c m)$
            boîte $[d-1]=i$;
            $\mathrm{P}(n-i, m, c, d-1) ;$
        FinPour
        Si $(n \geq m)$
            boîte[ $d-1]=m$;
            $\mathrm{P}(n-m, m, \max (0, c-1), d-1)$;
        FinSi
    FinSi
\}
Fig. 2 - Code de la procédure P.
Question 3.2. Soit c⃗ une taille compatible avec p et α un facteur premier de p d'occurrence r. On note m l'occurrence maximale de α dans une composante de c⃗. Montrer que l'occurrence de α dans ∏_i c_i est au moins r + m. Montrer de plus que si c⃗ est élémentaire pour p, alors l'occurrence de a est égale à m pour au moins deux composantes de c⃗ et l'occurrence de α dans ∏_i c_i est exactement r + m.
Question 3.3. Lorsque p n'a qu'un seul facteur premier, écrire un programme utilisant la procédure P de la figure 2 pour générer toutes les tailles élémentaires pour p. Comment pourrait-on générer toutes les tailles élémentaires pour un entier p quelconque?

Une construction particulière d'hyper-rectangles latins de la forme A_(a⃗)

Soient p ∈ ℕ^∗, d ≥ 2 et c⃗ ∈ (ℕ^∗)^d, compatible avec p. L'objet de cette dernière partie est de mettre au point un programme compact, généralisant le principe de construction d'un carré latin de la question 2.8 , pour construire a⃗ ∈ (ℕ^∗)^(d − 1) (avec ∏_i a_i = p ) et une matrice entière A, de taille (d − 1) × d, tels que lapplication A_(a⃗) de N_(c⃗) dans N_(a⃗), définie par A_(a⃗)(x⃗) = (Ax⃗)moda⃗, soit un hyper-rectangle latin.
Question 3.4. Soient a⃗ ∈ (ℕ^∗)^(d − 1) et A entière de taille (d − 1) × d. Montrer que les propriétés suivantes sont équivalentes : (i) A_(a⃗) est un hyper-rectangle latin de N_(c⃗) dans N_(a⃗), (ii) ∀i, 0 ≤ i < d, A_(a⃗) définit une multi-bijection de N_(c⃗)(i, 0) dans N_(a⃗), (iii) ∀i, 0 ≤ i < d, B_(a⃗) définit une multi-bijection de N_(b¯) dans N_(a¯) où B ∈ M_(d − 1)(ℤ) est la matrice obtenue en supprimant la colonne d'indice i de A et b⃗ ∈ (ℕ^∗)^(d − 1) est obtenu en supprimant la composante d'indice i de c⃗.
Question 3.5. On s'intéresse ici au cas particulier des hyper-cubes. Vérifier que s'il existe un hyper-cube latin de taille c⃗ alors p = q^(d − 1) avec q ∈ ℕ^∗ et c⃗ = (q, …, q) (d'où l'appellation de «cube»). Réciproquement, lorsque p = q^(d − 1) et c⃗ = (q, …, q) avec q ∈ ℕ^∗, construire un hyper-cube latin de taille c⃗ dans un ensemble de cardinal-p. (On pourra s'inspirer des résultats des questions 1.8 et 3.4 et choisir une matrice bi-diagonale.)
Si A_(a⃗) définit un hyper-rectangle latin de N_(b⃗) dans N_(a⃗) et si c⃗ vérifie ∀i, c_i = k_i b_i avec k_i ∈ ℕ^∗, alors A_(a⃗), en tant qu'application de N_(c⃗) dans N_(a⃗), définit également un hyper-rectangle latin. Il suffit donc de savoir construire un hyper-rectangle latin de n'importe quelle taille élémentaire pour savoir construire un hyper-rectangle latin de n'importe quelle taille compatible. En dimension 2, il n'existe qu'une taille élémentaire pour p, c'est ( p, p ) qui correspond à un carré latin de taille p. En dimension d ≥ 3 en revanche, toutes les tailles élémentaires ne correspondent pas à des hyper-cubes latins (considérer par exemple (15, 10, 6) qui est élémentaire pour 30 ) et il ne suffit pas de savoir construire des hyper-cubes latins pour savoir construire des hyper-rectangles latins de n'importe quelle taille compatible. L'objet des questions suivantes est de mettre en place un procédé différent de construction d'hyper-rectangles latins, par récurrence sur la dimension.
Dans la suite, pour un n-uple x⃗, on note x⃗_– le ( n − 1 )-uple obtenu en supprimant la dernière composante de x⃗.
Question 3.6. Soient a⃗ ∈ (ℕ^∗)^(d − 1) et A_– une matrice entière de taille (d − 2) × (d − 1) telle que A_–_(a_–) soit un hyper-rectangle latin de dimension ( d − 1 ) de N_(c_–_–) dans N_(a_–_–). Soit A une matrice entière de taille (d − 1) × d de la forme :
A = (0; A_–, ⋮; 0; z_0…z_(d − 2), 1)
Montrer que si la dernière composante de a⃗ (c'est-à-dire a_(d − 2) ) divise la dernière composante de c⃗ (c'est-à-dire c_(d − 1) ) et que A_(a⃗) est une multi-bijection de N_(c⃗)(d − 1, 0) dans N_(a⃗) alors A_(a⃗) est un hyper-rectangle latin de dimension d de N_(c⃗) dans N_(a⃗).
On définit à présent a⃗, en fonction de c⃗ et p, par la formule suivante (où, par convention, un produit sans termes vaut 1 ) :
∀i, 0 ≤ i ≤ d − 2, a_i = (p ∧ (∏_(j = i + 1)^(d − 1)c_j))/(p ∧ (∏_(j = i + 2)^(d − 1)c_j))
Question 3.7. Montrer que, pour des entiers u, v et w non nuls, on a u ∧ (vw) = (u ∧ v)(u/(u ∧ v) ∧ w). Montrer les propriétés suivantes : (1) a⃗ ∈ (ℕ^∗)^(d − 1), (2) ∏_(i = 0)^(d − 2)a_i = p, (3) ∀i, 0 ≤ i ≤ d − 2, a_i divise c_(i + 1), (4) on retrouve a⃗_– en appliquant la formule (1) avec c⃗_– et l'entier p/(p ∧ c_(d − 1)), (5) c⃗_– est compatible avec p/(p ∧ c_(d − 1)) et, ∀i, 0 ≤ i ≤ d − 2, ∏_(j = 0)^i c_j est multiple de ∏_(j = 0)^i a_j.
Question 3.8. Soit S = diag(s⃗), matrice diagonale de M_(d − 2)(ℤ), et C ∈ M_(d − 1)(ℤ) de la forme :
C = ()
En considérant pour commencer le cas où C est de taille 2 puis en généralisant, montrer que la diagonale h⃗ ∈ (ℕ^∗)^n de la forme d'Hermite de C est donnée par la récurrence descendante suivante : r_(d − 2) = v_(d − 2), h_(i + 1) = (r_(i + 1)s_i)/(r_i) et r_i = v_i ∧ r_(i + 1) pour 0 ≤ i ≤ d − 3, enfin h_0 = r_0.
On étudie maintenant la récurrence descendante définie par r_(d − 2) = a_(d − 2) et, pour 0 ≤ i ≤ d − 3, w_i = (r_(i + 1))/(c_(i + 1) ∧ r_(i + 1)), r_i = a_i w_i ∧ r_(i + 1) et h_(i + 1) = (r_(i + 1)a_i)/(r_i).
Question 3.9. Montrer, en utilisant la propriété (3) de la question 3.7, que r_i = r_(i + 1)((r_(i + 1) ∧ a_i)/(r_(i + 1) ∧ c_(i + 1))) et que h_(i + 1) divise c_(i + 1), lorsque 0 ≤ i ≤ d − 3. Montrer, par une récurrence descendante sur i et en utilisant la propriété (5) de la question 3.7, que r_i∏_(j = 0)^(i − 1)a_j divise ∏_(j = 0)^i c_j. En déduire que r_0 divise c_0.
Soit T ∈ M_(d − 2)(ℤ), unimodulaire, et B ∈ M_(d − 1)(ℤ) de la forme:
B = (u_0; ⋮, T; u_(d − 3); z_0, z_1…z_(d − 2))
On vérifie aisément que si z_0 = 1 − w⃗ ⋅ u⃗ = 1 − ∑_i w_i u_i et (z_1, …, z_(d − 2)) = − w⃗T alors B est unimodulaire et son inverse est :
B^(− 1) = (1, 0…0; u_0; ⋮, T; u_(d − 3))^(− 1)(w_0…w_(d − 3), 1; I, 0; 0)
Question 3.10. En regroupant tous les résultats de cette dernière partie et en utilisant le résultat de la question 1.7, donner un procédé récursif de construction d'un hyper-rectangle latin de toute taille c⃗ ∈ (ℕ^∗)^d compatible avec p. (On remarquera que la matrice T apparaissant dans la construction est unimodulaire triangulaire inférieure et que multiplier une matrice à gauche par une matrice unimodulaire triangulaire inférieure ne change par les coefficients diagonaux de sa forme d'Hermite.)
On peut vérifier que le programme ci-dessous suit le principe développé dans cette partie et calcule bien une matrice A telle que A_(a⃗) soit un hyper-rectangle latin de taille c⃗ compatible avec p lorsque a⃗ est donné par la formule (1).
Matrice $(d, \vec{c}, \vec{a})\{$
    Pour $i$ de 0 à $d-2$
        Pour $j$ de 0 à $d-1$
            Si $(j=0$ ou $j=i+1) A(i, j)=1$; Sinon $A(i, j)=0$;
        FinPour
    FinPour
    Pour $i$ de 1 à $d-2$
        $r=a_{i} ;$
        Pour $j$ de $i-1$ à 0 (par valeurs descendantes)
            $w=\frac{r}{r \wedge c_{j+1}} ; r=\left(w a_{j}\right) \wedge r ;$
            Pour $k$ de 0 à $i$
                $A(i, k)=A(i, k)-w A(j, k) ;$
            FinPour
        FinPour
    FinPour
\}

Pas de description pour le moment