Adloun

Corrigé Mines-Ponts 2026 Informatique commune MP-PC-PSI — Partie 2 (Q1 à Q11) : Quixo à deux joueurs humains : plateau, coups valides, glissements, alignements

Sujet officiel du concours Mines-Ponts, session 2026, épreuve Informatique commune MP-PC-PSI. Corrigé rédigé par Ibrahim Alame.

Sujet officiel (PDF, site du concours)

Énoncé

Le jeu. Plateau de cubes ; chaque cube est neutre, marqué X (joueur 1) ou marqué O (joueur 2). À son tour, un joueur prend un cube du bord, neutre ou à sa marque, puis le réinsère (à sa marque) à une extrémité de la ligne ou de la colonne de la case libérée, en poussant les cubes intermédiaires pour boucher le trou ; le remettre à sa place d'origine est interdit. Aligner cinq symboles (ligne, colonne, diagonale) fait gagner.

Figure 1 — Le plateau de jeu.

Codage. Le plateau est une liste de listes d'entiers : neutre, pour X, pour O ; la case est en haut à gauche. Les fonctions internes de coût linéaire sont interdites (sauf le tranchage).

Figure 2 — Situation de jeu, le joueur 1 doit jouer.

Q1. Écrire initialisation() qui renvoie le plateau entièrement neutre.
Q2. Majorer le nombre de configurations du plateau ; en déduire, par un logarithme, le nombre de bits nécessaires pour les coder par des entiers (le codage naïf utilise entiers de bits).
Q3. Sur la figure 2, lister par ligne croissante les cases que le joueur 1 peut choisir.
Q4. Il choisit : où peut-il replacer le cube ?
Q5. Écrire case_bord(i, j) (vrai si la case est au bord) sans énumérer les cases du bord.
Q6. Écrire case_choix_valide(jeu, i, j, joueur), en réutilisant case_bord.
Q7. Écrire case_deplacement_valide(i_d, j_d, i_n, j_n) : la case d'arrivée est-elle permise depuis la case de départ , supposée valide ?
Q8. Le cahier réponse donne deplacement_case(jeu, i_d, j_d, i_n, j_n, joueur) en quatre cas (« mouvement 1 » : ; 2 : ; 3 : ; 4 : sinon). Décrire le glissement des pions dans chaque cas ; prouver la terminaison du mouvement 1 par un variant.
Q9. Compléter les deux lignes manquantes du mouvement 2.
Q10. Écrire alig(jeu, joueur, i, n) : vrai si la ligne contient pions consécutifs du joueur (), en lisant chaque case une seule fois. (acol, adiag1, adiag2 font de même sur la colonne et les deux diagonales.)
Q11. Écrire gagnant(jeu, joueur) : vrai si le joueur a un alignement de cinq.

Corrigé

Q1. On construit chaque ligne par une nouvelle liste, pour que les cinq lignes soient indépendantes en mémoire.


def initialisation() -> [[int]]:
    return [[0] * 5 for _ in range(5)]

Ce que le correcteur attend : surtout pas [[0]*5]*5, qui crée cinq références vers la même ligne : modifier plateau[0][0] modifierait toute la colonne . Le test p = initialisation(); p[0][0] = 7 laisse bien p[1][0] à . Pas de numpy non plus : le sujet impose une liste de listes.

Q2. Chacune des cases prend l'une de valeurs (neutre, X, O), indépendamment si l'on ignore symétries et configurations inaccessibles : au plus

Avec bits on code entiers distincts ; il faut , soit

avec . Sans calculatrice, la majoration donne déjà : bits suffisent (on code chaque case sur bits). Dans les deux cas, on est très loin des bits du codage naïf : un facteur environ.

Q3. Le joueur 1 (X) peut prendre une case du bord neutre ou marquée X. En parcourant les cases du bord de la figure 2 :

Les autres cases du bord portent un O. (Liste confirmée par case_choix_valide de Q6, exécutée sur le plateau de la figure 2.)

Q4. La case est sur la colonne de droite, hors d'un coin. Le cube se réinsère à une extrémité de sa ligne ou de sa colonne , sauf à sa place d'origine :

Par exemple, vers , le cube neutre de descend en et X s'installe en .

Q5. Une case est au bord si l'un de ses indices vaut ou ; on vérifie aussi qu'elle est dans le plateau.


def case_bord(i: int, j: int) -> bool:
    return 0 <= i < 5 and 0 <= j < 5 and (i == 0 or i == 4 or j == 0 or j == 4)

On renvoie directement l'expression booléenne, sans if ... return True else return False.

100 % gratuit

La suite du corrigé est sur Adloun

Le corrigé rédigé en entier, question par question, et le tuteur pour poser des questions sur ce sujet.

Voir le corrigé complet, gratuitement

Inscription gratuite en 30 secondes (e-mail, nom d'utilisateur, mot de passe, classe ou profil), sans carte bancaire : arrivée directe sur le corrigé.

Toutes les parties de l'épreuve

Corrigé complet gratuit →