CCINP Informatique Commune PC PSI 2024Sujet et rapport du jury
- Programmation en Python (listes, dictionnaires, conditionnelles, boucles)
- Récursivité
- Représentation des entiers en binaire
- Arbres de jeu et algorithme MinMax
- Bases de données et requêtes SQL
Téléchargements
- Corrigé : pas encore disponible
Présentation du sujet
Le jeu de l'awalé : règles, programmation en Python, intelligence artificielle MinMax et base de données SQLAfficher ou masquer la section
Présentation du sujet
Le sujet prend pour support le jeu de l'awalé. Il commence par des questions de compréhension des règles, fait ensuite programmer en Python la structure d'une partie entre deux humains (dictionnaire, fonctions de semis, de récolte et de test de famine), puis construit une intelligence artificielle fondée sur l'algorithme MinMax. Il se termine par des requêtes SQL sur une bibliothèque d'ouvertures. Les réponses se portent sur un document réponse.
- 1Partie I : présentation et règlesQuestions de compréhension des règles sur des situations de plateau, dont la mise en famine de l'adversaire.
- 2Partie II : programmation de la structure de jeuReprésentation du jeu par un dictionnaire, codage binaire, copie profonde, fonctions de semis et de récolte (dont une récursive) et déroulement d'une partie.
- 3Partie III : programmation de l'intelligence artificielleArbre des configurations, algorithme MinMax (fonction NegaAwale), recherche de maximum, puis requêtes SQL sur une base de parties.
L'épreuve en chiffres
Moyenne 10,93 / 20 · écart-type 3,65 · 4 148 présents · où vous situez-vous ?Afficher ou masquer la section
L'épreuve en chiffres
- Moyenne
- 10,93/ 20
- Écart-type
- 3,65
- Présents
- 4 148
- Coefficient
- 6
- Durée
- 3 h
Votre note sur 20 à ce sujet, en conditions de concours.
Source : document officiel du concours, épreuve du 24 avril 2024. Notes publiées par le concours (après harmonisation le cas échéant). Courbe : estimation par une loi normale.
Ce qu'a observé le jury
6 erreurs relevéesErreurs de syntaxe Python élémentaires · Conditions mal parenthésées · Codage binaireAfficher ou masquer la section
Ce qu'a observé le jury
6 erreurs relevéesLe sujet couvrait une large part du nouveau programme d'informatique de CPGE. Le jury constate une nette régression de la maîtrise de Python : un nombre assez important de copies n'ont aucune question Python correcte et prennent leurs points sur le SQL. La propreté des copies s'est dégradée, alors que le document réponse a été globalement bien utilisé.
Les erreurs les plus sanctionnées
- 1Erreurs de syntaxe Python élémentaires
Le jury relève de nombreuses fautes récurrentes : mots clés avec majuscule, égalité écrite avec un seul signe, division entière à la place du modulo, conditions du type valeur == 2 or 3, confusion entre print et return.
« Cette session semble marquer une nette régression quant à la maîtrise de Python. »
- 2Conditions mal parenthéséesQ9, Q12
Traduire en Python des conditions données dans l'énoncé a souvent échoué à cause de parenthèses oubliées autour des and et des or, et de structures valeur if condition sans else.
- 3Codage binaireQ6
Le nombre de bits nécessaire pour coder le nombre maximal de graines d'une case a rarement été trouvé.
« Combien de bits pour coder l’entier 48 ? 248 ? Rarement 6 malheureusement. »
- 4Distribution des grainesQ8
Seule la moitié des candidats utilise une boucle while. Peu pensent à sauter puis vider la case d'origine, ou à gérer les indices quand la distribution fait plusieurs tours de plateau.
- 5Fonction récursive mal construiteQ10
Les retours intermédiaires sont mal gérés, avec une variable locale remise à zéro à chaque appel. Une solution correcte mais non récursive ne rapportait aucun point.
- 6Valeurs de retour non stockéesQ11, Q15, Q19
Des fonctions sont appelées sans stocker leur résultat dans une variable, ou sans argument. Pour tester la famine, il fallait jouer le coup sur une copie de la structure de jeu.
Ce qui a été bien réussi
- La question Q1 a été assez bien traitée et la majorité des candidats trouve la bonne parité en Q4.
- Les questions Q13, Q14, Q16 et Q17 ont été plutôt ou assez bien traitées.
- Les questions de SQL (Q22 à Q25) sont traitées dans la majorité des copies.
Conseils du jury
- Pratiquer régulièrement Python sur machine et refaire quelques anciens TP juste avant les écrits pour retrouver les automatismes.
- Écrire son code sur papier toute l'année avant de le taper en TP, pour soigner présentation et lisibilité.
- Choisir des noms de variables clairs et marquer l'indentation par l'alignement ou un trait vertical, jamais par un caractère répété.
- Commenter son code avec mesure et ne pas recopier les signatures de fonctions fournies.
- Respecter l'ordre des mots clés en SQL et ne pas mélanger syntaxe SQL et syntaxe Python.
Synthèse rédigée par WikiPrépa à partir du rapport officiel du jury (à télécharger en PDF). Les citations sont extraites du rapport.
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
Lecture du sujet en ligne
INFORMATIQUE
RAPPEL DES CONSIGNES
- Utiliser uniquement un stylo noir ou bleu foncé non effaçable pour la rédaction de votre composition ; d'autres couleurs, excepté le vert, bleu clair ou turquoise, peuvent être utilisées, mais exclusivement pour les schémas et la mise en évidence des résultats.
- Ne pas utiliser de correcteur.
- Écrire le mot FIN à la fin de votre composition.
Les calculatrices sont interdites.
Les différents algorithmes doivent être rendus dans leur forme définitive sur le Document Réponse dans l'espace réservé à cet effet en respectant les éléments de syntaxe du langage (les brouillons ne sont pas acceptés).
La réponse ne doit pas se limiter à la rédaction de l'algorithme sans explication, les programmes doivent être expliqués et commentés de manière raisonnable.
Document Réponse: 12 pages
Seul le Document Réponse doit être rendu dans son intégralité (le QR Code doit être collé sur la première page de ce Document Réponse).
Le jeu de l'awalé
Il ne faut pas recopier les signatures des fonctions dans le Document Réponse (DR), il faut écrire directement :
def ma_fonction(arg1, arg2):
# liste d'instructions
Partie I - Présentation et règles

1.1 - But du jeu
1.2 - Déroulement de la partie

.jpg)
Par ailleurs, il est interdit de jouer un coup qui ôte, après récolte, toutes les graines du camp adverse.
- la case appartient au camp adverse (condition 1);
- cette case contient exactement 2 ou 3 graines (condition 2);
- s'il vient de ramasser les graines de la case, le joueur doit continuer la récolte dans le sens inverse de la semence, si la case respecte les deux premières conditions;
- il est interdit d'affamer son adversaire, on ne peut donc pas prendre toutes les graines du camp adverse. Si la phase de récolte se termine ainsi, alors la récolte est annulée (condition 3 liée à la règle de la famine).
1.3 - Conditions de fin
- un joueur obtient au moins 25 graines dans sa réserve;
- 3 graines ou moins restent sur le plateau;
- un joueur est dans l'incapacité de jouer car aucun coup ne permet de respecter les différentes règles.
1.4 - Compréhension des règles


Partie II - Programmation de la structure de jeu
II. 1 - Représentation du jeu
def initialisation(nom_joueur1, nom_joueur2) :
jeu = {}
jeu['joueur1'] = nom_joueur1 # Nom du premier joueur
jeu['joueur2'] = nom_joueur2 # Nom du second joueur
jeu['score'] = [0,0] # Réserve du joueur1, puis du joueur2
jeu['n'] = 0 # Nombre de tours déjà effectués
jeu['plateau'] = [4]*12 # Plateau de jeu initial
return jeu
Le joueur1 commence la partie.
Le plateau de jeu est séparé en deux parties égales. Les six premières cases correspondent à celles du joueur dont c'est le tour; les six dernières cases sont celles de l'adversaire. À la fin d'un tour de jeu, il faut échanger les deux ensembles de six cases. Ainsi les cases d'indices 0 à 5 correspondent toujours à celles du joueur dont c'est le tour (joueur actif) et les cases d'indices 6 à 11 à celles de son adversaire.
L'argument jeu:dict fait référence à un dictionnaire représentant le jeu de structure identique à celui renvoyé par initialisation.

def awale_jcj(nom_joueur1, nom_joueur2):
jeu = initialisation(nom_joueur1, nom_joueur2)
jeu_continue = True
while jeu_continue :
affiche(jeu['plateau'])
case_choisie = int(input("Choisir une case : "))
jeu_continue = tour_jeu(jeu, case_choisie)
return gagnant(jeu)
La fonction affiche permet d'afficher le plateau de jeu à l'écran.
Dans le code proposé, nous considérons que le joueur ne commet pas d'erreur de frappe et rentre toujours dans la console l'indice de la case choisie.
11.2 - Programmation d'un tour de jeu
- tester si la case où l'on prend les graines est valide ou non (les conditions de validité sont explicitées ensuite);
- si le choix est valide, semer les graines puis récolter des graines. On incrémente alors le nombre de tours, on ajoute au score du joueur le nombre de graines récoltées et on échange les deux parties du plateau;
- tester si la partie est finie ou non (les conditions sont décrites dans la première partie).
Les pré-conditions des fonctions de cette partie et de la partie suivante sont répertoriées ci-dessous :
- l'argument jeu:dict fait référence à un dictionnaire représentant le jeu comme présenté au début de cette partie;
- l'argument plateau:[int] fait référence à une structure de données similaire à ce que contient jeu['plateau'];
- l'argument case:int fait référence à un entier compris entre 0 inclus et 12 exclu.
- deplacer_graines(plateau:[int], case:int)
→ int; - ramasser_graines(plateau:[int], case:int)
→ int.
- la case appartient au camp de l'adversaire, soit toujours dans la deuxième moitié du plateau;
- la case contient 2 ou 3 graines.
- condition 1 : elle est du côté du joueur dont c'est le tour;
- condition 2 : elle est non vide;
- condition 3 : à la fin du tour de jeu, les cases de l'adversaire ne sont pas complètement vides (condition de famine).
def test_case(plateau, case):
""" Vérifie si la case choisie par le joueur est acceptable
renvoie True si la case est acceptable, False sinon """
condition3 = test_famine(plateau, case)
# Case acceptable
test = # à compléter
return test
- un des joueurs possède plus de la moitié des graines (soit au moins 25);
- le nombre de tours joués est supérieur ou égal à 100 (pour éviter un jeu infini lorsqu'il y a peu de graines);
- il reste 3 graines ou moins sur le plateau;
- le joueur qui va jouer ne possède plus de case jouable. On suppose que le plateau a été échangé avant de faire les tests, donc le joueur qui doit jouer a ses graines dans les cases d'indices 0 à 5 .
def tour_jeu(jeu, case):
plateau = jeu['plateau']
if test_case(plateau, case): # La case jouée est acceptable
# Instruction 1 : deplacer les graines
# Instruction 2 : ramasser les graines
""Pour augmenter le score, il faut savoir qui joue grâce à la
parité du nombre de tours"""
if # Condition 1:
jeu['score'][0] = jeu['score'][0] + graines_gagnees
else:
jeu['score'][1] = jeu['score'][1] + graines_gagnees
# Instruction 3 # On incrémente le nombre de tours
tourner_plateau(jeu) # Echanger les plateaux
return tour_suivant(jeu)
else:
print("La case choisie n'est pas valable")
return True
Partie III - Programmation de I'Intelligence Artificielle (IA)
III. 1 - Arbre des configurations
- copie(jeu:dict)
→ dict : réalise la copie profonde du dictionnaire jeu passé en argument; - deplacer_graines(plateau:[int], case:int)
→ int : réalise le déplacement des graines sur le plateau depuis la case choisie et renvoie la case (entier) où la dernière graine a été déposée; - ramasser_graines(plateau:[int], case:int)
→ int: réalise le ramassage des graines sur le plateau depuis la case où la dernière graine a été déposée et renvoie le nombre de graines récoltées (nombre de points gagnés); - tour_suivant(jeu:dict)
→ bool : teste si la configuration de jeu permet de continuer, renvoie True si c'est le cas et False sinon; - test_case(plateau:[int], case:int)
→ bool : teste si le joueur dont c'est le tour a le droit de jouer la case choisie, renvoie True si c'est le cas et False sinon; - cases_possibles(jeu:dict)
→ [int] : renvoie la liste des cases jouables par le joueur actif.
- est-ce que le nœud est une feuille, c'est-à-dire une configuration où le jeu se termine? La fonction tour_suivant(jeu:dict) écrite dans la partie précédente sert à cet effet;
- combien d'enfants possèdent un nœud, c'est-à-dire, quels coups sont possibles à partir d'une configuration de jeu?
- quel est le nombre de graines gagnées quand on passe d'un nœud à un autre?
Remarque : les arguments d'entrée ne doivent pas être modifiés par la fonction.
III. 2 - Algorithme MinMax
- si c'est au joueur dont c'est le tour de jeu, on remonte la valeur de jeu maximale (la plus favorable au joueur);
- si c'est à l'adversaire dont c'est le tour de jeu, on remonte la valeur de jeu minimale (la plus favorable à l'adversaire).
Comment est estimée la valeur de jeu dans le cas de l'awalé?
- si le nœud est une feuille, on connaît alors qui est le gagnant. On va donc tester qui est le gagnant et:
- si c'est le joueur actif, on renvoie une valeur de jeu très grande (500) qui ne pourra être dépassée que par une autre configuration gagnante;
- si c'est l'adversaire, on renvoie une valeur de jeu très petite ( -500 ) qui sera forcément dépassée par une autre configuration non perdante;
- si l'on a atteint la profondeur maximale fixée, il n'y a pas de gain supplémentaire, donc cette valeur est nulle NegaAwale
(p_(term)) = 0 ; - sinon, pour chaque nœud enfant
p_i , on calcule le gaing_i (nombre de graines ramassées) pour passer du nœudp au nœudp_i , puis on lui retranche la valeur de jeu calculée au nœudp_i . La valeur de jeu renvoyée parNegaAwale(p) correspond alors au maximum des différences, soitNegaAwale(p) = max_i(g_i − NegaAwale(p_i)) .
- en appliquant les règles de jeu, on obtient facilement que le gain de (a) vers (b) vaut 4 , le gain de (b) vers (c) vaut 4 et le gain de (b) vers (d) vaut 0 ;
- les valeurs de jeu de (c) et (d) sont nulles car on a atteint la profondeur de 2;
- enfin la valeur de jeu de (b) est égale au
max(4 − 0; 0 − 0) = 4 .
Donner la case à jouer avec cette profondeur de recherche pour optimiser le gain d'Alice.
def NegaAwale (jeu, profondeur_max, profondeur):
if : # Condition 1
if (tour_joueur1(jeu) and gagnant(jeu) == jeu['joueur1']) or
(not(tour_joueur1(jeu)) and gagnant(jeu) == jeu['joueur2']):
return 500
elif (tour_joueur1(jeu) and gagnant(jeu) == jeu['joueur2']) or
(not(tour_joueur1(jeu)) and gagnant(jeu) == jeu['joueur1']):
return -500
else:# Egalité
return 0
elif : # Condition 2
return 0
else :
choix_cases = cases_possibles(jeu)
vals_jeu = []
for case in choix_cases :
# Instruction 1 : Détermination du gain et du nouveau jeu
# Instruction 2 : Remontée de la valeur de jeu du noeud
enfant
vals_jeu.append([case, g-p])
return max_vals(vals_jeu, profondeur)
- soit le nœud père est le nœud de départ : dans ce cas, on renvoie l'indice (un entier) de la case correspondant à la valeur de jeu maximale;
- soit le nœud père est un nœud intermédiaire : dans ce cas, on renvoie la valeur de jeu maximale (un entier).
def awale_jcj(nom_joueur1, nom_joueur2)
jeu = initialisation(nom_joueur1, nom_joueur2)
jeu_continue = True
while jeu_continue :
affiche( jeu['plateau'] )
case_choisie = int(input("Choisir une case : "))
jeu_continue = tour_jeu(jeu, case_choisie)
return gagnant(jeu)
III. 3 - Bibliothèque d'ouverture
| Joueur | ||||
| id_Joueur | nom | prenom | niveau | naissance |
| 18571 | Martin | Jean | 2048 |
|
| 18572 | Dupond | Marie | 2103 |
|
| 18573 | Develion | Théo | 1857 |
|
| Partie | |||||
| id_Partie | id_joueur1 | id_joueur2 | resultat | jour | jeu |
| 1 | 1547 | 1568 | 0.5 |
|
'egai...' |
| 2 | 1204 | 3 | 0 |
|
'egaj...' |
| 3 | 4 | 2 | 1 |
|
'egbi...' |
- id_Joueur : identifiant d'un joueur (entier, clé primaire);
- nom : nom du joueur (chaîne de caractères);
- prenom : prénom du joueur (chaîne de caractères);
- niveau : niveau maximal atteint par le joueur au cours de sa carrière (entier);
- naissance : date de naissance du joueur (date).
- id_Partie : identifiant de la partie (entier, clé primaire);
- id_joueur1 : identifiant du joueur débutant la partie (entier);
- id_joueur2 : identifiant du second joueur (entier);
- resultat : 1 est une victoire du joueur1, 0.5 une égalité et 0 une victoire du joueur2 (flottant);
- jour : date du jour de la partie (date);
- jeu : liste des coups successifs de la partie, sans inversion du plateau, stockée sous forme d'une chaîne de caractères. 'egai...' signifie que le joueur1 a joué la
5^e case (d'indice 4) représentée par la lettre 'e', puis le joueur2 a joué la7^e case (d'indice 6) représentée par la lettre 'g', puis le joueur1 a joué la1^(re) case et le joueur2 a répondu par la9^e case et ainsi de suite.
ANNEXE
Rappels des syntaxes en Python
| Fonctionnalités | Commandes Python | |||
| définir une liste |
|
|||
| définir un dictionnaire | dic
|
|||
| accéder à un élément | L[0]renvoie 1 dic['a']renvoie 0 | |||
| extraire une sous-liste | L[1:2]renvoie[2] | |||
| vérifier si une clé est dans un dictionnaire | 'a'in dic renvoie True | |||
| ajouter un élément à une liste | L.append(5) | |||
| supprimer le dernier élément d'une liste et le renvoyer | a=L.pop() | |||
| copier une liste | L2=L.copy() | |||
| ajouter un élément à un dictionnaire | dic['d']= 4 | |||
| définir une chaîne de caractères | mot='Python' | |||
| taille d'une chaîne,d'une liste ou d'un dictionnaire | len(mot) | |||
| extraire des caractères | mot[2:6] | |||
| concaténer des chaînes ou des listes | 'cc'+'inp'donne'ccinp' | |||
| dupliquer des chaînes ou des listes | 'c'*3 donne'ccc' | |||
| convertir en flottant,en entier,en chaîne,en liste | float(s),int(s),str(L),list(s) | |||
| définir une chaîne de caractères contenant une tabulation |
|
|||
| parcours en valeur d'un dictionnaire | for v in dic.values():print(v) | |||
| parcours des clés d'un dictionnaire | for c in dic :print(c) | |||
| parcours des clés et des valeurs d'un dictionnaire | for
|
FIN

DOCUMENT RÉPONSE
Q1 - Indice et justification
.jpg)

.jpg)
.jpg)
| - | - | - | - | ![]() |
- | - | | | - | - | T | 都龧龧都 | ![]() |
都龧龧 | - | - | I | | | T | - | - | - | | | ||||||||||||||||||||||||||
| - | ||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
- | | | - | - | - | I | T | T | - | - | - | - | - | I | T | 都 | - | - | - | - | - | - | - | - | I | ![]() |
- | - | - | ![]() |
- | - | | | | | I | |
| - | - | - | ![]() |
- | - | - | - | - | - | - | - | - | - | - | ![]() |
- | - | - | - | - | - | |||||||||||||||
| - | - | - | - | - | - | - | - | - | - | |||||||||||||||||||||||||||
| - | - | - | - | - | ||||||||||||||||||||||||||||||||
| - | ||||||||||||||||||||||||||||||||||||
| - | ||||||||||||||||||||||||||||||||||||
| - | ||||||||||||||||||||||||||||||||||||
| - | ||||||||||||||||||||||||||||||||||||
| - | ||||||||||||||||||||||||||||||||||||
| - | ||||||||||||||||||||||||||||||||||||
| - | ||||||||||||||||||||||||||||||||||||
| - | ||||||||||||||||||||||||||||||||||||
| - | ||||||||||||||||||||||||||||||||||||
| - | ||||||||||||||||||||||||||||||||||||
| - | - | - | - | ![]() |
- | - | - | - | - | - | | | | | | | I | | | - | - | - | | | | | - | - | - | - | - | T | ![]() |
- | - | - | |||||||||||||||||||||||||
|
|
- | - | - | - | - | - | - | T | - | ![]() |
- | - | - | - | - | - | - | - | - | - | - | - | - | ||||||||||||||||||||||||||||||||
| 都 | - | - | - | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
![]() |
- | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| - |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
![]() |
- | ![]() |
![]() |
![]() |
![]() |
- 1 | + | - | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - | - |
|
0 | - | 0 | | 0 | | - | ![]() |
|||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0 | - | - |
|
- | |||||||||||||||||||||||||||||||||||||||||||||||||||
| - | - | - | - |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
- | - | - | ![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
- | ![]() |
![]() |
- |
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| - | ![]() |
- | - | ![]() |
|
||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
- | - | ![]() |
- | ![]() |
0 |
|
||||||||||||||||||||||||||||||||||||||||||||||||
| - 2 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
.jpg)
![]() |
![]() |
![]() |
![]() |
![]() |
- | - |
|
- | - | 都 | - | - | | | | | - | | | | | T | - | T | - | - | - | - | | | | | - | | | | | ||||||||||||
![]() |
- | - | - | - | - |
|
- | - | - | - | - | - | - | T | - J .
|
- | - | - | - | - |
|
||||||||||||||||||||
| - | x | - | - | - | - | | | ![]() |
|
|
||||||||||||||||||||||||||||||||
| - | - |
|
|
- | ![]() |
![]() |
|
||||||||||||||||||||||||||||||||||
| - | |||||||||||||||||||||||||||||||||||||||||
| - | - | - | - | - 3 . | | | ![]() |
|
|
|||||||||||||||||||||||||||||||||
| - | - | ||||||||||||||||||||||||||||||||||||||||
| - |
|
- | ![]() |
||||||||||||||||||||||||||||||||||||||
![]() |
| | - | | |
|
- . y |
|
|||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||
![]() |
|
|
|||||||||||||||||||||||||||||||||||||||
![]() |
- | - | | | - | - | ![]() |
- | ||||||||||||||||||||||||||||||||||
| - | - |
|
- | | | - | - | - | - | - | - | - | - | - | - | - | - | - | ![]() |
![]() |
|l|l|l|l|l|l|ly | - | - |
|
||||||||||||||||||
![]() |
- | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | |||||||||||||||||||||||||
![]() |
- | 0.1 | ![]() |
- | - | - | - | - | - | - | . | - | - | ![]() |
| | degor d |
|
||||||||||||||||||||||||
| - | - | - | - | - |
|
- | - | - | - | ![]() |
- | - | - | - | ![]() |
|
![]() |
||||||||||||||||||||||||
![]() |
- | - | 龧龧龧龧 | - | ![]() |
![]() |
- |
|
|
||||||||||||||||||||||||||||||||
![]() |
- | - | - | - | |||||||||||||||||||||||||||||||||||||
| - | - | - | - | - | - | - | - | - | - | |
|
- |
|
|
. | | | ||||||||||||||||||||||||||
| - | - | - | - | - | - | - | - | - | | | - 1 | - | ||||||||||||||||||||||||||||||
| - | - | - |
|
||||||||||||||||||||||||||||||||||||||
| - | - | - | - | - | - | - | - |
|
- |
|
- | | | |||||||||||||||||||||||||||||
| - | - | - | - | - | - | - | | | - |
|
![]() |
![]() |
- | |||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||
| - | - | - | - | - | - | - | - |
|
- |
|
![]() |
|
|||||||||||||||||||||||||||||
| - | - | - | - |
|
|
- | - | ![]() |
|
![]() |
- | - 1 |
|
||||||||||||||||||||||||||||
| - | - | - | - | - | - | - | - | ![]() |
- | ![]() |
- | ||||||||||||||||||||||||||||||
| - | - | - | - | - | - | - | - | 50 | - | - | - | - 1 - | - 1 | - | |||||||||||||||||||||||||||
| - | - | - | - | - | - | - | - | - | 0.7 V. |
|
- | 0 | - | - |
|
||||||||||||||||||||||||||
![]() |
|
- | - | - |
|
- | - | - |
|
- | - | - | - | - | - | - | - | ||||||||||||||||||||||||
![]() |
1 |
|
1 | 1 | 1 | 1 | 1 | - |
|
1 | 1 |
|
|
|
|
- | - | - | - | - |
|
- | |||||||||||||||||||
![]() |
| | T | | | | | T | - | - | - | | | | | - | - | - | ![]() |
| | - | | | - | - | | | T | | | | | T | - | - | - | | | - | | | . |
|
||||||||||||||||||||||
| - | - | - | - | - | - | - | 都龧 | - | - | - | ![]() |
|||||||||||||||||||||||||||||||||||||||||||
| - | - | - | - | |||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
- | - | d | - | - | - | - | ![]() |
|||||||||||||||||||||||||||||||||||||||||||||
| - | - | - | ![]() |
- | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
1 | - | ||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
- | 0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| - | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||
| - | - | |||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
- | - | - | - | - | - | 0.0 | ![]() |
0 | |||||||||||||||||||||||||||||||||||||||||||||
| - | - | - | - | - | ![]() |
|
||||||||||||||||||||||||||||||||||||||||||||||||
| - | - 0 - 0 - | ![]() |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||
| - | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - | - | 0 | + | - | | | + | - | - | ||||||||||||||||||||||||||||||||||||||||||||||
| - | - | - | - | - | - 0.00 | - 7 - 7 - 7 - | - | |||||||||||||||||||||||||||||||||||||||||||||||
| - | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - | - | - | ![]() |
![]() |
![]() |
![]() |
- | - |
|
+ | | |
|
![]() |
|||||||||||||||||||||||||||||||||||||||||
| - | - | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| - | - | - | ||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - | - | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| - | - | - | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| - | | | - | ![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
+ | + | ||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
- | - | - | ![]() |
![]() |
![]() |
![]() |
- | - | ![]() |
![]() |
![]() |
| | | |
|
| | - | | | | |
|
| | | | | | - | - | - | - | | | | |
|
|||||||
| 0 | - | - | - | 0.1 | 0.70 | 0.7 .1 .7 | - | 0.1 |
|
||||||||||||||||||||||||||||
| - | - |
|
|||||||||||||||||||||||||||||||||||
| - | |||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||
| 1 |
| - | - | - | - | - | - | - | - | - | - | - | - | - | | | | | | | - | T | | | | | | | I | - | - | - | - | - | - | - | - | | | - | | | ||
| - | . | - | - | - | - | - | - | - | - | - | - | - | - | |||||||||||||||||||||
| - | - | 都龧龧龧 | - | - | - | - | - | - | - | |||||||||||||||||||||||||
| - | . | - | - |
|
- | - | - | - | - | | | ||||||||||||||||||||||||
| - | - | - | ||||||||||||||||||||||||||||||||
| - | - | - | - | |||||||||||||||||||||||||||||||
| - |
|
|||||||||||||||||||||||||||||||||
| - | - | - | ||||||||||||||||||||||||||||||||
| - | | | - | T | - | | | - | - | - | - | - | - | - | | | | | - | | | ![]() |
|||||||||||||||||||||||||||||||||||||||||||||
| - | d | - V | - | - | - | - | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - | - | - | - | - |
|
- | - | - | - | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| - |
|
- | - |
|
-- |
|
- |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
- | - | - 5 - -
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.jpg)
.jpg)
.jpg)
Instruction 3
\begin{table}
\captionsetup{labelformat=empty}
\caption{Instruction 3}
\begin{tabular}{|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|}
\hline & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & \\
\hline & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & \\
\hline
\end{tabular}
| - | - | - | - | - | T | T | - | - | - | - | | | | | - | | | T | | | | | | | - | - | - | - | - | - | - | |
|
|||||||||||||||||||
| | | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | . | - | - |
|
|||||||||||||||||
| - | - | - | - | - | - | - | - | - | - | - | - | ||||||||||||||||||||||||||||||||||
| - | - | - | - | - | - | - | - | - | . | . | |||||||||||||||||||||||||||||||||||
![]() |
- | - | - | - | - | - | - | - | - | - | - | - | - | - | - | ||||||||||||||||||||||||||||||
![]() |
- |
|
都皘 | - | 0 | - | - | - | ![]() |
||||||||||||||||||||||||||||||||||||
| - | - | - | - | - | - | ||||||||||||||||||||||||||||||||||||||||
| 0 | - | - | - | - | - | - | - | - | - | - | - | - | ![]() |
- | - | - | ![]() |
- | - | - | |||||||||||||||||||||||||
| - | - | - | - | - | - | ||||||||||||||||||||||||||||||||||||||||
| - | - | - | - | - | - | - | - | - | - | - | - | - | - | ||||||||||||||||||||||||||||||||
| - | - | ![]() |
- | - | - | ![]() |
| | 0 | - | ![]() |
|
||||||||||||||||||||||||||||||||||
| - | |||||||||||||||||||||||||||||||||||||||||||||
| - | - | 0 | - 5 V V V⿱⿰㇒一⿻一⿰丨丨大y |
|
|||||||||||||||||||||||||||||||||||||||||
| - | |||||||||||||||||||||||||||||||||||||||||||||
| 1 | - | ||||||||||||||||||||||||||||||||||||||||||||
| - 5 V V V . . | - | --1 | ![]() |
||||||||||||||||||||||||||||||||||||||||||
| - | . | - |
|
- | |||||||||||||||||||||||||||||||||||||||||
![]() |
- | | | - |
|
|||||||||||||||||||||||||||||||||||||||||
![]() |
- | - | - | - | 0 | ||||||||||||||||||||||||||||||||||||||||
| - | - | ||||||||||||||||||||||||||||||||||||||||||||
|
|
- | - | - | - | - | - | - | -+ - | - | +
|
![]() |
-+ X | |||||||||||||||||||||||||||||||||
![]() |
- | - | - | - | |||||||||||||||||||||||||||||||||||||||||
| - | - | - | - | -
|
- | ![]() |
- |
|
|||||||||||||||||||||||||||||||||||||
| - | - | - | - | - | - | - | - | - 37 llogo | ![]() |
| | |||||||||||||||||||||||||||||||||||
| . | - | - | - | - | - | - | - 3 V V | ||||||||||||||||||||||||||||||||||||||
| - | - | - | - | + |
|
||||||||||||||||||||||||||||||||||||||||
| - | |||||||||||||||||||||||||||||||||||||||||||||
| - | - | ![]() |
- | - 1 - | |||||||||||||||||||||||||||||||||||||||||
| - | - | - |
|
- | |||||||||||||||||||||||||||||||||||||||||
| - | - |
|
![]() |
-
|
- |
|
|
||||||||||||||||||||||||||||||||||||||
| . | ![]() |
![]() |
- | ![]() |
| |
|
|||||||||||||||||||||||||||||||||||||||
| - | |||||||||||||||||||||||||||||||||||||||||||||
.jpg)


Condition 1
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
| | | | | - | - |
|
- | | | - | - | ![]() |
- | - | - | - | - | - | - | - | - | - | - | T | - | | | - | | | - | | | - | - | - | |||
| | | | | | | | | - | |||||||||||||||||||||||||||||
| - | - | - | |||||||||||||||||||||||||||||||
| - | |||||||||||||||||||||||||||||||||
Questions fréquentes
4 questionsSur quoi porte le sujet d'informatique commune CCINP PC PSI 2024 ?Afficher ou masquer la section
Questions fréquentes
4 questionsSur quoi porte le sujet d'informatique commune CCINP PC PSI 2024 ?
Sur le jeu de l'awalé : compréhension des règles, programmation Python de la structure de jeu, intelligence artificielle par l'algorithme MinMax et requêtes SQL sur une base de parties.
Quelles erreurs le jury a-t-il le plus relevées en informatique CCINP PC PSI 2024 ?
Des fautes de syntaxe Python élémentaires, des conditions mal parenthésées, des fonctions récursives mal construites et des valeurs de retour non récupérées. Le jury parle d'une nette régression de la maîtrise de Python.
Les questions SQL du sujet d'informatique CCINP 2024 étaient-elles réussies ?
Elles ont été traitées dans la majorité des copies et ont même permis à certains candidats sans aucune réponse Python correcte de prendre des points. Le jury demande de respecter l'ordre des mots clés et d'utiliser LIKE comme indiqué dans l'énoncé.
Comment bien rédiger du code à l'écrit d'informatique CCINP ?
Le jury conseille des noms de variables intelligibles, une indentation soignée, des commentaires mesurés et un passage par le brouillon avant de remplir le document réponse.
Pas de description pour le moment

.jpg)
.jpg)

.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)

.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)

.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)

.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)

.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
