This commit is contained in:
parent
2fda876df3
commit
35f194f649
67
README.md
67
README.md
@ -12,24 +12,24 @@ Voici mes réponses pour l'examen 2025 d'_Algorithmes et Structures de données_
|
||||
<table>
|
||||
<tr>
|
||||
<td><strong>But</strong></td>
|
||||
<td>...</td>
|
||||
<td>Compter le nombre de valeurs positives différentes ayant leur opposé dans une liste</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Input</strong></td>
|
||||
<td>...</td>
|
||||
<td>La liste des demi-touches (entiers relatifs non-nuls)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Output</strong></td>
|
||||
<td>...</td>
|
||||
<td>Le nombre de touches distinctes dont les valeurs positives et négatives sont dans la liste</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Signature</strong></td>
|
||||
<td>
|
||||
|
||||
```python
|
||||
def function1(
|
||||
*args
|
||||
) -> Any:
|
||||
def countKey(
|
||||
pieces: list[int]
|
||||
) -> int:
|
||||
```
|
||||
|
||||
</td>
|
||||
@ -46,24 +46,26 @@ def function1(
|
||||
<table>
|
||||
<tr>
|
||||
<td><strong>But</strong></td>
|
||||
<td>...</td>
|
||||
<td>Trouver le chemin le plus court entre deux points, en considérant que certaines routes ne sont praticables que de nuit/jour</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Input</strong></td>
|
||||
<td>...</td>
|
||||
<td>Nœud de départ (index), nœud d'arrivée (index) et liste des routes / arêtes (nœud 1, nœud 2, restriction)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Output</strong></td>
|
||||
<td>...</td>
|
||||
<td>Liste des nœuds (index) à parcourir</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Signature</strong></td>
|
||||
<td>
|
||||
|
||||
```python
|
||||
def function2(
|
||||
*args
|
||||
) -> Any:
|
||||
def findSafestPath(
|
||||
start: int,
|
||||
end: int,
|
||||
intersections: list[tuple[int, int, int]]
|
||||
) -> list[int]:
|
||||
```
|
||||
|
||||
</td>
|
||||
@ -80,24 +82,25 @@ def function2(
|
||||
<table>
|
||||
<tr>
|
||||
<td><strong>But</strong></td>
|
||||
<td>...</td>
|
||||
<td>Trouver dans un réseau de console un sous-graphe connexe de taille donnée</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Input</strong></td>
|
||||
<td>...</td>
|
||||
<td>Taille n du sous-graphe recherché, liste des connexions</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Output</strong></td>
|
||||
<td>...</td>
|
||||
<td>Liste de n consoles toutes interconnectées</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Signature</strong></td>
|
||||
<td>
|
||||
|
||||
```python
|
||||
def function3(
|
||||
*args
|
||||
) -> Any:
|
||||
def findTightlyLinkedConsoles(
|
||||
n: int,
|
||||
consoles: list[tuple[int, int]]
|
||||
) -> list[int]:
|
||||
```
|
||||
|
||||
</td>
|
||||
@ -114,24 +117,26 @@ def function3(
|
||||
<table>
|
||||
<tr>
|
||||
<td><strong>But</strong></td>
|
||||
<td>...</td>
|
||||
<td>Compter le nombre de séquences de N coups infligeant un total de H dégâts</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Input</strong></td>
|
||||
<td>...</td>
|
||||
<td>Nombre N de coups dans la séquence, nombre C de coups possibles (dégâts 1 à C inclus), total H de dégâts</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Output</strong></td>
|
||||
<td>...</td>
|
||||
<td>Nombre de séquences possibles</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Signature</strong></td>
|
||||
<td>
|
||||
|
||||
```python
|
||||
def function4(
|
||||
*args
|
||||
) -> Any:
|
||||
def computeNbrOfDifferentSequences(
|
||||
N: int,
|
||||
C: int,
|
||||
H: int
|
||||
) -> int:
|
||||
```
|
||||
|
||||
</td>
|
||||
@ -148,24 +153,26 @@ def function4(
|
||||
<table>
|
||||
<tr>
|
||||
<td><strong>But</strong></td>
|
||||
<td>...</td>
|
||||
<td>Trouver les placements de pièces Minitris formant un rectangle plein</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Input</strong></td>
|
||||
<td>...</td>
|
||||
<td>Largeur de la grille, longueur de la grille, liste des pièces à poser</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Output</strong></td>
|
||||
<td>...</td>
|
||||
<td>Liste des positions des pièces</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Signature</strong></td>
|
||||
<td>
|
||||
|
||||
```python
|
||||
def function5(
|
||||
*args
|
||||
) -> Any:
|
||||
def playMinitrisFastAndWell(
|
||||
board_width: int,
|
||||
board_height: int,
|
||||
pieces: list[tuple[tuple[int,int], tuple[int,int]]]
|
||||
) -> list[list[int, int]]:
|
||||
```
|
||||
|
||||
</td>
|
||||
|
@ -12,7 +12,7 @@ point d'arrivée, tel que les routes marquées 1 ne soient parcourues que de jou
|
||||
seulement de nuit (index impair). En plus des routes données, nous pouvons aussi
|
||||
rester sur un même nœud pour une nuit.
|
||||
Afin de bien gérer les différences d'états entre jour et nuit, nous pouvons intégrer le demi-jour
|
||||
associé à chaque visite de nœud. Ainsi, une même intersection peut avoir deux nœud:
|
||||
associé à chaque visite de nœud. Ainsi, une même intersection peut avoir deux nœuds :
|
||||
un pour une visite de jour, et un de nuit.
|
||||
|
||||
Pour résoudre ce problème, comme nous ne pouvons pas établir d'heuristique mesurant
|
||||
|
@ -6,7 +6,7 @@ Explications:
|
||||
Comme indiqué dans la donnée de l'exercice, il s'agit ici de trouvé un sous-graphe
|
||||
connexe dans un graphe quelconque de consoles interconnectées
|
||||
|
||||
Pour ce faire nous pouvons procéder ainsi:
|
||||
Pour ce faire, nous pouvons procéder ainsi :
|
||||
Étape 1 :
|
||||
- Compter le nombre de voisins de chaque nœud (console)
|
||||
- Éliminer ceux ayant moins de voisins que la taille de sous-graphe recherché
|
||||
@ -20,10 +20,10 @@ Pour ce faire nous pouvons procéder ainsi:
|
||||
Étape 2 :
|
||||
- Pour chaque nœud du graphe :
|
||||
- Calculer l'ensemble des nœuds communs entre ses voisins (et lui-même),
|
||||
et les voisins des ses voisins (et eux-mêmes)'
|
||||
C'est-à-dire, si N1 et un nœuds et nb(N1) = {N2, N3, ...} est l'ensemble de ses voisins,
|
||||
et les voisins de ses voisins (et eux-mêmes)'
|
||||
C'est-à-dire, si N1 est un nœud et nb(N1) = {N2, N3, ...} est l'ensemble de ses voisins,
|
||||
on cherche l'intersection de {N1} U nb(N1), {N2} U nb(N2), {N3} U nb(N3), etc.
|
||||
- Si c'est ensemble contient au moins n éléments, il s'agit alors d'un sous-graphe connexe.
|
||||
- Si cet ensemble contient au moins n éléments, il s'agit alors d'un sous-graphe connexe.
|
||||
On peut ainsi en extraire les n premiers nœuds comme résultat
|
||||
"""
|
||||
|
||||
|
@ -72,4 +72,4 @@ def bonus():
|
||||
if __name__ == '__main__':
|
||||
print(computeNbrOfDifferentSequences(1, 6, 3) == 1)
|
||||
print(computeNbrOfDifferentSequences(2, 6, 7) == 6)
|
||||
print(bonus())
|
||||
#print(bonus())
|
||||
|
Loading…
x
Reference in New Issue
Block a user