تخطَّ إلى المحتوى الرئيسي
Wadifa Infoالوظيفة العمومية بالمغرب FR

نموذج المباراة الوطنية المشتركة CNC 2020: المعلوميات - شعبة TSI لولوج مدارس المهندسين

🏢 المباراة الوطنية المشتركة CNC (الأقسام التحضيرية) 👤 مباراة ولوج المدارس العليا للمهندسين 🎯 المعلوميات 📅 2020 👁️ 31 مشاهدة

⬇️ تحميل PDF الرابط الدائم: https://www.wadifa-info.com/نموذج-مباراة/1798/نموذج-المباراة-الوطنية-المشتركة-CNC-2020-المعلوميات-شعبة-TSI-لولوج-مدارس-المهندس

باختصار

هذا نموذج امتحان كتابي سابق لمباراة مباراة ولوج المدارس العليا للمهندسين لدى المباراة الوطنية المشتركة CNC (الأقسام التحضيرية) (2020)، منشور على وظيفة إنفو للاطلاع والتحميل المجاني بصيغة PDF مع تصحيح مقترح.

الجهة المنظمة
المباراة الوطنية المشتركة CNC (الأقسام التحضيرية)
الدرجة
مباراة ولوج المدارس العليا للمهندسين
التخصص
المعلوميات
الدورة
2020
عدد الصفحات
8
لغة الأسئلة
الفرنسية
التصحيح
تصحيح مقترح متوفر في هذه الصفحة
الموضوع الرسمي لاختبار المعلوميات في المباراة الوطنية المشتركة (CNC) دورة 2020 لولوج المدارس العليا للمهندسين والمؤسسات المماثلة، الخاص بطلبة الأقسام التحضيرية شعبة TSI. يتضمن هذا النموذج 8 صفحة من نص الاختبار الأصلي. تجد في الموقع مواضيع باقي المواد والسنوات لنفس المباراة.
نموذج مباراة جديد كل يوم على قناة واتساب
هل أفادك؟ شاركه مع من يبحث
WhatsApp Facebook Telegram
تابع تحضيرك: 📄 نموذج المباراة الوطنية المشتركة CNC 20… 📄 نموذج المباراة الوطنية المشتركة CNC 20… 📄 نموذج المباراة الوطنية المشتركة CNC 20…
📝 نص أسئلة النموذج (مستخرج آلياً من الصفحات الممسوحة)

استُخرج هذا النص آلياً من صور الامتحان وقد يحتوي على أخطاء في القراءة — الصور أعلاه هي المرجع.

— صفحة 1 —
Épreuve d’Informatique — Session 2020 - Filière TSI

Les candidats sont informés que la précision des raisonnements algorithmiques ainsi que le soin apporté
à la rédaction et à la présentation des copies seront des éléments pris en compte dans la notation. ١
convient en particulier de rappeler avec précision les références des questions abordées. Si, au cours de
l'épreuve, un candidat repère ce qui peut lui sembler être une erreur d'énoncé, il le signale sur sa copie et
poursuit sa composition en expliquant les raisons des initiatives qu'il est amené à prendre.

Remarques générales :
v Cette épreuve est composée d'un exercice et de trois parties tous indépendants ;
y Toutes les instructions et les fonctions demandées seront écrites en Python ;
y Les questions non traitées peuvent être admises pour aborder les questions ultérieures ;
y Toute fonction peut être décomposée, si nécessaire, en plusieurs fonctions.

ENNENNEENENEENENERNE

Exercice : (4 points)
Somme de nombres entiers

1 pt Q.1- Écrire la fonction somme (n) qui reçoit en paramètre un entier strictement positif n, et qui retourne
la valeur de la somme :1 +2 +3 + 4 +... +

Exemple : La fonction somme(4) retourne 10

05pt Q.2- Déterminer la complexité de la fonction somme(n).

075pt Q.3- Écrire la fonction terme (k) qui reçoit en paramètre un entier k strictement positif, et qui retourne
la valeur de l'expression suivante :

Exemple : La fonction terme(4) retourne le nombre 0.4
05pt Q.4- Déterminer la complexité de la fonction terme(k).

125pt Q.5- Écrire la fonction sigma (n) qui reçoit en paramètre un entier strictement positif n, et qui retourne
ia valeur de la somme suivante :

TR + 3 dis 4 s

Page 1sur8

نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

— صفحة 2 —
Épreuve d’Informatique — Session 2020 - Filière TSI

Partie I : Calcul numérique

Intégration numérique

Méthode de "Simpson"

En analyse numérique, il existe une vaste famille d’algorithmes dont le but principal est d’estimer la
valeur numérique de l'intégrale d’une fonction f sur un intervalle /a, b] :

Ces techniques procèdent en trois phases :
a. Décomposition de l'intervalle /a, b] en sous-intervalles contigus :

b. Intégration approchée de la fonction sur chaque sous-intervalle ;

c. Sommation des résultats numériques ainsi obtenus.

Méthode de Simpson :
La méthode de Simpson, du nom de Thomas Simpson, est une technique qui utilise l'approximation
d'ordre 2 de f par un polynôme quadratique P prenant les mêmes valeurs que f aux points

d'abscisses a, m = a et b.

Pour déterminer l'expression de cette parabole (polynôme de degré 2), on utilise l'interpolation
lagrangienne. Le résultat peut être mis sous la forme suivante :

ti" 0) ( ‏ل - عازه - م‎ {5 item)
‏3م‎ RES OU RASE SOS

Un polynôme étant une fonction très facile à intégrer, on approche l'intégrale de la fonction f sur
l'intervalle /a, bJ, par l'intégrale de P sur ce même intervalle. On a ainsi, la formule simple:

صر + ‎ap (ES?)‏ + وى ‎LE‏ = وموم ‎j‏ بي مر

Pour appliquer cette méthode d'intégration, on doit découper l'intervalle /a , b] en n sous-intervalles de

longueur h = = Ensuite on applique la formule précédente sur chacun des sous-intervalles, et on

effectue la somme des résultats obtenus. En simplifiant la sommation des résultats obtenus, on obtient la
formule finale suivante :

Page 2sur8

نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

— صفحة 3 —
Epreuve d’Informatique — Session 2020 - Filière TSI

Q.1- Écrire la fonction somme (f,a,h,n) qui retourne la valeur de la somme suivante.

Q.2- Écrire la fonction integrale_simpson (f,a,b,n), qui retourne la valeur de l’intégrale de la
fonction f dans l'intervalle [a , b], en utilisant la formule de simpson.

On suppose que les modules numpy et matplotlib.pyplot sont importés :

import numpy as np
import matplotlib.pyplot as pl

Q.3.a - Écrire en python, la fonction g définie par : g(x) = x + 5*cos(1+x")*sin(e*) -1

Q.3.b - Écrire le programme qui trace la courbe suivante de la fonction ‏.ع‎ Le nombre de points générés
dans la courbe est : 250

—1.0 —0.5 0.0 0.5 Lo 15 2.0

Q.3.c- Écrire le code python qui utilise la méthode de simpson, et qui calcule et affiche la valeur de
l’intégral de la fonction ‏,ع‎ dans l'intervalle /-0.5 , 1.5], en utilisant pour nombre de subdivision : n=10°

Page 3 sur 8

نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

— صفحة 4 —
Épreuve d’Informatique — Session 2020 - Filière TSI

Partie II : Base de donnés et langage SQL

Classement des candidats

Une grande école d'ingénieurs organise un concours au profit des étudiants (candidats), qui veulent y
accéder pour suivre leurs études supérieures. Le concours est composé de plusieurs épreuves : une
seule épreuve par matière.

Après le passage des épreuves, une note totale est calculée pour chaque candidat. Ensuite les candidats
sont classés dans l’ordre décroissant de la note totale.

NB : Une note inférieure à 5.0 est une note éliminatoire du classement final. Si un candidat possède au
moins une note éliminatoire, alors ce candidat sera exclu du classement final.

L'école d'ingénieurs utilise une base de données relationnelle composée de trois tables :

Candidats Notes Matières

numéro (entier) numC (entier) code (texte)
nom (texte) codM (texte) nom (texte)

prénom — (texte) note (réel) coeff (entier)

La table ‘Candidats’ contient les numéros, les noms et les prénoms des candidats. Le champ numéro
est la clé primaire dans cette table.

Exemples :

numéro | nom | prénom
416 | Jarfaoui | Hicham

162 | Senhaji | Amal
23 | Bakouri_ | Ahmed

La table ‘Matières’ contient les codes, les noms et les coefficients des matières. Le champ code est la
clé primaire dans cette table.

Exemples :

code | nom coeff

Mathématiques

si Sciences de l'ingénieur
Ch Chimie

Page 4sur8

نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

— صفحة 5 —
Épreuve d’Informatique — Session 2020 - Filière TSI

La table ‘Notes’ contient, pour chaque candidat, la note correspondante à chaque matière. Les champs
numC et codM sont deux clés étrangères, qui font respectivement référence, aux champs numéro et
code des tables ‘Candidats’ et ‘Matières’.

Exemples :

numCÇC | codM note

162
416

11,05
10,10

Q.1 - Déterminer la clé primaire de la table ‘Notes’, et justifier votre réponse.

Q.2 - Écrire, en algèbre relationnelle, une requête qui donne les numéros, les noms et prénoms de tous
les candidats, qui ne possèdent pas de note éliminatoire, en matière de code ‘M’.

Q.3 - Écrire la requête précédente (Q.2) en langage SQL.

Q.4 - Écrire, en langage SQL, une requête qui donne les noms des matières, la note maximale et la note
minimale de chaque matière, triés dans l'ordre décroissant de la moyenne des notes de chaque matière.

Q.5 - Écrire, en langage SQL, une requête qui donne le compte des candidats qui sont exclus du
classement final.

Q.6- Pour les candidats non exclus du classement final, la note totale de chaque candidat est calculée
par la formule suivante :

note totale = 2 (note * coefficient)

La note d'une matière est multipliée par le coefficient correspondant à cette matière.

Écrire, en langage SQL, une requête qui donne le numéro, le nom, le prénom et la note totale de chaque
candidat non exclu, ayant la note totale supérieure strictement à 1000.0, triés dans l’ordre décroissant de
la note totale.

Page 5 sur 8

نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

— صفحة 6 —
Épreuve d’Informatique — Session 2020 - Filière TSI
Partie 111 : Problème

Transformée de ‘Burrows-Wheeler”

La transformée de Burrows-Wheeler, couramment désignée par l'acronyme BWT (pour Burrows-
Wheeler Transform) est une technique inventée par Michael Burrows et David Wheeler, et elle a été publiée
en 1994. Cette technique permet de réorganiser les données : c’est une transformation qui, à partir d’un
texte donné, produit un autre texte contenant exactement les mêmes caractères, mais dans un autre ordre,
pour lequel les répétitions de caractères ont tendance à être contiguës.

Le but de cette partie est de réaliser l'algorithme de la transformée de Burrows-Wheeler.

1- Rotation d’une chaîne de caractères
On considère une chaîne de caractères T non vide, et un entier p tel que : 0 ‹ p ‹ taille de T.

La rotation de T d’indice p est la chaîne de caractères obtenue par la concaténation des deux sous-
chaînes suivantes :

« La sous-chaîne de T, composée de la suite des caractères en partant de la position p, jusqu'à la
dernière position dans T ;

= et de la sous-chaîne de T, composée de la suite des caractères en partant de la première
position de T, jusqu'à la position p-1 dans T.

Exemples :
T = 'daacdacdab"

La rotation de T d'indice 0 est la chaîne : 'daacdacdab' + " = 'daacdacdab"'
La rotation de T d'indice 1 est la chaîne : 'aacdacdab' +'d' = ‘'aacdacdabd'
La rotation de T d'indice 2 est la chaîne : 'acdacdab'+'da' = 'acdacdabda’
La rotation de T d'indice 9 est la chaîne : 'b' + 'daacdacda' = 'bdaacdacda"

‹7 7 VV

Q.1- Écrire la fonction rotation (T,p), qui reçoit en paramètres une chaîne de caractères T non
vide, et un entier ‏م‎ tel 0 ‹ ‏م‎ ‹ taille de 1. La fonction retourne la rotation de T d'indice p.

2- Liste des rotations d’une chaîne de caractères

Q.2- Écrire la fonction liste_rotations (T), qui reçoit en paramètre une chaîne de caractères T
non vide, et qui retourne une liste R qui contient toutes les rotations possibles de T.

Exemple :

1 ='daacdacdab' (la taille de la chaîne T est 10)

La fonction liste_rotations (T) retourne la liste des 10 rotations possibles :

R = [ ‘'daacdacdab', 'aacdacdabd', 'acdacdabda’, 'cdacdabdaa', 'dacdabdaac’, ‘acdabdaacd',
'cdabdaacda', 'dabdaacdac', 'abdaacdacd', 'bdaacdacda' ]

Page 6 sur 8

نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

— صفحة 7 —
Épreuve d’Informatique — Session 2020 - Filière TSI
3- Tri de la liste des rotations

Q.3- Écrire la fonction tri_rotations (R), qui reçoit en paramètre la liste R qui contient toutes les
rotations d’une chaine de caractères. La fonction trie les éléments de R dans l’ordre alphabétique.

Exemple :

R= [ 'daacdacdab', 'aacdacdabd', 'acdacdabda', 'cdacdabdaa', 'dacdabdaac', 'acdabdaacd', 'cdabdaacda’,
'dabdaacdac', 'abdaacdacd', 08800380023 ]

Après l’appel de la fonction tri_rotrations (R), on obtient la liste triée :

[ 'aacdacdabd', 'abdaacdacd', 'acdabdaacd', 'acdacdabda', 'bdaacdacda', 'cdabdaacda', 'cdacdabdaa’,
'daacdacdab', 'dabdaacdac', 'dacdabdaac' ]

4- Position de la chaîne initiale dans la liste des rotations triée

La liste R contient toutes les rotations de la chaine de caractères T. On suppose que la liste R est triée
dans l’ordre alphabétique. La chaîne T est un élément de la liste R (T est la rotation d’indice 0). Et on
veut chercher la position de T dans la liste R triée. Pour cela, on propose d'utiliser le principe de la
recherche dichotomique.

La recherche dichotomique est un algorithme de complexité logarithmique, qui permet de rechercher la
position d'un élément x dans une liste L triée. Le principe de cet algorithme est le suivant :

1. Calculer la position m du milieu de la liste L ;

2. Si L[m] = x, alors retourner m ( m est la position de x dans L) ;

3. Six‹L[m], alors reprendre l'étape (1) en considérant la première moitié de la liste L ;
4

Si x›L[m], alors reprendre l’étape (1) en considérant la deuxième moitié de la liste ‏ا‎

Q.4- Écrire la fonction position (T,R), qui reçoit en paramètres une chaîne de caractères T, non
vide, et la liste R de toutes les rotations de T, 1166 dans l’ordre alphabétique. La fonction retourne la
position de la chaîne T dans la liste triée R, en utilisant le principe de la recherche dichotomique.

Exemple :
T = 'daacdacdab"'
La liste des rotations de T, triée dans l’ordre alphabétique est :

R = ['aacdacdabd', 'abdaacdacd', 'acdabdaacd', 'acdacdabda', 'bdaacdacda', 'cdabdaacda’,
'cdacdabdaa', 'daacdacdab’', 'dabdaacdac', 'dacdabdaac' ]

La fonction position (T, R) retourne le nombre 7, qui représente l'indice de la chaîne T dans la liste des
rotations triée R.

5- Transformée de Burrows-Wheeler

La transformée de Burrows-Weeler se contente de réorganiser les caractères d’une chaîne de caractères
T, de manière à obtenir un autre texte contenant exactement les mêmes caractères de T, mais dans un
autre ordre, pour lequel les répétitions de caractères ont tendance à être contiguëês.

Page 78

نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

— صفحة 8 —
Épreuve d’Informatique — Session 2020 - Filière TSI
Le principe de la transformée de Burrows-Weeler est le suivant :
On construit la liste R de toutes les rotations possibles de la chaîne T ;
On trie les éléments de la liste R dans l’ordre alphabétique ;

1
2
3. On recherche la position p de la chaîne T dans la liste R triée ;
4. On construit la chaîne B composée des derniers caractères des chaines de la liste R triée ;
5

Le résultat de la transformée de Burrows-Wheeler est le tuple (B, p).

Exemple :
T = 'daacdacdab"'
La liste des rotations de T, triée dans l’ordre alphabétique est :

R = [ ‘'aacdacdabd', 'abdaacdacd', 'acdabdaacd', 'acdacdabda', 'bdaacdacda', 'cdabdaacda’,
'cdacdabdaa', 'daacdacdab', 'dabdaacdac'’, 'dacdabdaac' ]

La position de T dans R est : p=7.
La chaîne composée des derniers caractères des éléments de la liste R triée est : B = 'dddaaaabcc'.

Le résultat de la transformée de Burrows-Wheeler est le tuple : (‘dddaaaabcc' , 7 )

Q.5- Écrire la fonction BWT (T), qui reçoit en paramètre une chaîne de caractères T non vide, et qui
retourne le tuple (B, p).

Exemple :
T = 'daacdacdab"'

La fonction BWT (T) retourne le tuple : (‘dddaaaabcc', 7 )

Page 8sur 8

نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

✅ التصحيح المقترح

هذا تصحيح مقترح من إعداد فريق wadifa-info لمساعدتك على فهم منهجية الإجابة — وليس تصحيحاً رسمياً صادراً عن الإدارة المنظِّمة. أسئلة هذا الامتحان محررة بالفرنسية، لذلك التصحيح محرر بالفرنسية أيضاً.

Ce sujet est l'épreuve d'Informatique du Concours National Commun (CNC) 2020, filière TSI (classes préparatoires, admission aux écoles d'ingénieurs). Il comporte un exercice (4 points) et trois parties indépendantes : calcul numérique (méthode de Simpson), base de données et SQL, et un problème sur la transformée de Burrows-Wheeler. Toutes les réponses sont demandées en Python (et en SQL pour la partie II). Correction proposée, testée sur les exemples de l'énoncé :

Exercice — Somme de nombres entiers

Q.1 — somme(n)

def somme(n):
    s = 0
    for i in range(1, n + 1):
        s = s + i
    return s

somme(4) = 1 + 2 + 3 + 4 = 10. ✔

Q.2 — Complexité de somme(n)

La boucle fait n itérations, chacune en temps constant (une addition, une affectation) : complexité linéaire O(n). (Avec la formule n(n+1)/2, on obtiendrait O(1), mais ce n'est pas la fonction écrite en Q.1.)

Q.3 — terme(k)

def terme(k):
    return k / somme(k)

terme(4) = 4/10 = 0.4. ✔

Q.4 — Complexité de terme(k)

Un appel à somme(k) (O(k)) plus une division (O(1)) : O(k).

Q.5 — sigma(n)

Appeler terme(k) pour chaque k coûterait 1 + 2 + … + n = O(n²) opérations. On fait mieux en mettant à jour la somme 1 + … + k au fur et à mesure : O(n).

def sigma(n):
    s = 0        # s = 1 + 2 + ... + k
    total = 0
    for k in range(1, n + 1):
        s = s + k
        total = total + k / s
    return total

💡 La version directe sum(terme(k) for k in range(1, n+1)) est juste aussi, mais en O(n²). Mentionner la complexité de la version choisie rapporte des points. Contrôle : k/(1+…+k) = 2/(k+1).

Partie I — Intégration numérique : méthode de Simpson

Q.1 — somme(f, a, h, n)

def somme(f, a, h, n):
    s = 0
    for i in range(1, n):          # i = 1, ..., n-1
        s = s + f(a + i*h) + 2 * f(a + i*h + h/2)
    return s

Remarque : ce nom redéfinit la fonction somme(n) de l'exercice ; les deux parties étant indépendantes, ce n'est pas un problème.

Q.2 — integrale_simpson(f, a, b, n)

def integrale_simpson(f, a, b, n):
    h = (b - a) / n
    return h/6 * (f(a) + 4*f(a + h/2) + f(b)) + h/3 * somme(f, a, h, n)

La formule est exacte pour les polynômes de degré ≤ 3 (par exemple ∫01 x³dx = 0,25 avec n = 3), ce qui est un bon test.

Q.3.a — La fonction g

def g(x):
    return x**2 + 5 * np.cos(1 + x**2) * np.sin(np.exp(x)) - 1

On utilise les fonctions de numpy pour que g s'applique aussi à un tableau (utile pour le tracé).

Q.3.b — Tracé de la courbe (250 points)

La figure montre x ∈ [−1, 2] avec une grille :

x = np.linspace(-1, 2, 250)
y = g(x)
pl.plot(x, y, 'k')
pl.grid()
pl.show()

Q.3.c — Intégrale de g sur [−0,5 ; 1,5] avec n = 105

I = integrale_simpson(g, -0.5, 1.5, 10**5)
print(I)

Le programme affiche environ 2.00519.

Partie II — Base de données et SQL

Q.1 — Clé primaire de la table Notes

La clé primaire est le couple (numC, codM). Justification : numC seul se répète (le candidat 70 a une note en SI, M et P) et codM seul aussi (plusieurs candidats en SI) ; en revanche, comme il y a une seule épreuve par matière, un candidat n'a qu'une note par matière : le couple identifie chaque ligne de manière unique.

Q.2 — Algèbre relationnelle

On retire de l'ensemble des candidats ceux qui ont une note éliminatoire (< 5) en matière 'M' :

πnuméro, nom, prénom(Candidats) − πnuméro, nom, prénom( Candidats ⋈numéro = numC σcodM = 'M' ∧ note < 5(Notes) )

Variante acceptable si chaque candidat a bien une note en M : πnuméro, nom, prénom( Candidats ⋈numéro = numC σcodM = 'M' ∧ note ≥ 5(Notes) ).

Q.3 — En SQL

SELECT numéro, nom, prénom
FROM Candidats
WHERE numéro NOT IN (SELECT numC FROM Notes
                     WHERE codM = 'M' AND note < 5);

Q.4 — Note max et min par matière, triées par moyenne décroissante

SELECT m.nom, MAX(n.note), MIN(n.note)
FROM Matières m JOIN Notes n ON n.codM = m.code
GROUP BY m.code, m.nom
ORDER BY AVG(n.note) DESC;

Q.5 — Nombre de candidats exclus

Un candidat est exclu dès qu'il a au moins une note < 5 ; DISTINCT évite de le compter plusieurs fois :

SELECT COUNT(DISTINCT numC)
FROM Notes
WHERE note < 5;

Q.6 — Note totale des candidats non exclus (> 1000), ordre décroissant

SELECT c.numéro, c.nom, c.prénom, SUM(n.note * m.coeff) AS total
FROM Candidats c
     JOIN Notes n    ON n.numC = c.numéro
     JOIN Matières m ON m.code = n.codM
GROUP BY c.numéro, c.nom, c.prénom
HAVING MIN(n.note) >= 5 AND SUM(n.note * m.coeff) > 1000.0
ORDER BY total DESC;

La condition MIN(n.note) >= 5 écarte les candidats exclus (aucune note éliminatoire). On peut aussi écrire WHERE c.numéro NOT IN (SELECT numC FROM Notes WHERE note < 5) avant le GROUP BY.

Partie III — Transformée de Burrows-Wheeler

Q.1 — rotation(T, p)

def rotation(T, p):
    return T[p:] + T[:p]

T[p:] va de la position p à la fin, T[:p] de la position 0 à p − 1 : c'est exactement la définition (rotation('daacdacdab', 2) = 'acdacdabda').

Q.2 — liste_rotations(T)

def liste_rotations(T):
    R = []
    for p in range(len(T)):
        R.append(rotation(T, p))
    return R

Q.3 — tri_rotations(R)

Tri par insertion (en place) ; les chaînes se comparent avec < dans l'ordre alphabétique (lexicographique) :

def tri_rotations(R):
    for i in range(1, len(R)):
        x = R[i]
        j = i - 1
        while j >= 0 and R[j] > x:
            R[j + 1] = R[j]
            j = j - 1
        R[j + 1] = x
    return R

Équivalent en une ligne : R.sort(). Sur l'exemple, on obtient bien ['aacdacdabd', 'abdaacdacd', 'acdabdaacd', 'acdacdabda', 'bdaacdacda', 'cdabdaacda', 'cdacdabdaa', 'daacdacdab', 'dabdaacdac', 'dacdabdaac'].

Q.4 — position(T, R) par dichotomie

def position(T, R):
    g = 0
    d = len(R) - 1
    while g <= d:
        m = (g + d) // 2
        if R[m] == T:
            return m
        elif T < R[m]:
            d = m - 1          # première moitié
        else:
            g = m + 1          # deuxième moitié
    return -1                  # non trouvé (impossible ici : T est dans R)

Sur l'exemple, position('daacdacdab', R) renvoie 7. Complexité O(log n) comparaisons de chaînes.

Q.5 — BWT(T)

def BWT(T):
    R = liste_rotations(T)
    tri_rotations(R)
    p = position(T, R)
    B = ''
    for r in R:
        B = B + r[-1]          # dernier caractère de chaque rotation
    return (B, p)

BWT('daacdacdab') renvoie ('dddaaaabcc', 7), comme dans l'énoncé.

💡 Si T est périodique (par exemple 'abab'), certaines rotations sont égales ; la dichotomie peut alors renvoyer un autre indice que celui de la rotation d'indice 0, mais la chaîne B est la même. C'est un bon point à signaler sur la copie.

أسئلة شائعة حول هذا النموذج

هل يمكن تحميل هذا النموذج مجاناً؟
نعم. صفحات هذا النموذج (8) متاحة للاطلاع والتحميل مجاناً، وبدون تسجيل أو إنشاء حساب.
هل يتضمن هذا النموذج التصحيح؟
نعم. تجد في هذه الصفحة، أسفل صفحات الأسئلة، تصحيحاً مقترحاً يشرح منهجية الإجابة والعناصر المنتظرة، من إعداد فريق وظيفة إنفو.
ما هي الجهة المنظمة والدرجة المعنية بهذا النموذج؟
هذا النموذج من مباراة نظمتها المباراة الوطنية المشتركة CNC (الأقسام التحضيرية). ويخصّ درجة: مباراة ولوج المدارس العليا للمهندسين.
ما هي دورة هذا الامتحان ولغة أسئلته؟
الدورة: 2020. والأسئلة باللغة الفرنسية.
أين أجد نماذج أخرى لنفس المباراة؟
جمعنا نماذج نفس العائلة في صفحة ولوج المدارس والمعاهد العليا: /نماذج-مباريات/المدارس-والمعاهد-العليا، مرتّبة حسب الدورة من الأحدث إلى الأقدم.

💬 ناقش هذا النموذج (0)

شارك إجاباتك أو صحّح التصحيح — إذا كان لديك رأي مختلف حول أي نقطة، اكتبه هنا ليستفيد باقي المترشحين.

لا يوجد نقاش بعد — شارك إجابتك أو سؤالك حول هذا النموذج.

⚠️ ممنوع نشر أرقام الهاتف أو الروابط أو أي عرض مقابل مال — تُحذف هذه المشاركات تلقائياً.

المصدر: مباريات ولوج المدارس والمعاهد العليا

📎 كيف تستشهد بهذه الصفحة؟

صحفي أو مدوّن أو أستاذ؟ انسخ المرجع أسفله وضع رابطاً نحو هذه الصفحة.

الرابط الدائم: https://www.wadifa-info.com/نموذج-مباراة/1798/نموذج-المباراة-الوطنية-المشتركة-CNC-2020-المعلوميات-شعبة-TSI-لولوج-مدارس-المهندس

📲
ثبّت تطبيق وظيفة إنفو على جهازك: اضغط زر المشاركة في أسفل سفاري، ثم اختر إضافة إلى الشاشة الرئيسية. تصلك المباريات الجديدة بسرعة ودون متصفح.