From 35f194f6494217ccf551830982f12c24684c2c1a Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Tue, 28 Jan 2025 17:28:24 +0100 Subject: [PATCH] completed README --- README.md | 67 ++++++++++++++++++++++++++++++------------------------ src/Ex1.py | 2 +- src/Ex2.py | 4 ++-- src/Ex3.py | 14 ++++++------ src/Ex4.py | 4 ++-- 5 files changed, 49 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index 13a5bb1..050a8e5 100644 --- a/README.md +++ b/README.md @@ -12,24 +12,24 @@ Voici mes réponses pour l'examen 2025 d'_Algorithmes et Structures de données_ - + - + - + @@ -46,24 +46,26 @@ def function1(
But...Compter le nombre de valeurs positives différentes ayant leur opposé dans une liste
Input...La liste des demi-touches (entiers relatifs non-nuls)
Output...Le nombre de touches distinctes dont les valeurs positives et négatives sont dans la liste
Signature ```python -def function1( - *args -) -> Any: +def countKey( + pieces: list[int] +) -> int: ```
- + - + - + @@ -80,24 +82,25 @@ def function2(
But...Trouver le chemin le plus court entre deux points, en considérant que certaines routes ne sont praticables que de nuit/jour
Input...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)
Output...Liste des nœuds (index) à parcourir
Signature ```python -def function2( - *args -) -> Any: +def findSafestPath( + start: int, + end: int, + intersections: list[tuple[int, int, int]] +) -> list[int]: ```
- + - + - + @@ -114,24 +117,26 @@ def function3(
But...Trouver dans un réseau de console un sous-graphe connexe de taille donnée
Input...Taille n du sous-graphe recherché, liste des connexions
Output...Liste de n consoles toutes interconnectées
Signature ```python -def function3( - *args -) -> Any: +def findTightlyLinkedConsoles( + n: int, + consoles: list[tuple[int, int]] +) -> list[int]: ```
- + - + - + @@ -148,24 +153,26 @@ def function4(
But...Compter le nombre de séquences de N coups infligeant un total de H dégâts
Input...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
Output...Nombre de séquences possibles
Signature ```python -def function4( - *args -) -> Any: +def computeNbrOfDifferentSequences( + N: int, + C: int, + H: int +) -> int: ```
- + - + - + diff --git a/src/Ex1.py b/src/Ex1.py index fbcaa61..e9710c6 100644 --- a/src/Ex1.py +++ b/src/Ex1.py @@ -28,7 +28,7 @@ list = [] """ -def countKey(pieces: list[int])->int: +def countKey(pieces: list[int]) -> int: pieces = sorted(pieces) complete: int = 0 diff --git a/src/Ex2.py b/src/Ex2.py index d0a544b..9933362 100644 --- a/src/Ex2.py +++ b/src/Ex2.py @@ -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 @@ -93,4 +93,4 @@ def findSafestPath(start: int, end: int, intersections: list[tuple[int, int, int if __name__ == '__main__': print(findSafestPath(0,2,[(0, 1, -1), (1, 2, 0)]) == [0, 0, 1, 2]) - print(findSafestPath(0, 5, [(0,1,0), (0,2,1), (2,1,-1), (1,3,-1), (2,4,-1), (3,5,1), (3,4,0), (4,5,-1)]) == [0, 1, 3, 5]) + print(findSafestPath(0, 5, [(0, 1, 0), (0, 2, 1), (2, 1, -1), (1, 3, -1), (2, 4, -1), (3, 5, 1), (3, 4, 0), (4, 5, -1)]) == [0, 1, 3, 5]) diff --git a/src/Ex3.py b/src/Ex3.py index 993d513..d6d9284 100644 --- a/src/Ex3.py +++ b/src/Ex3.py @@ -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 """ @@ -71,6 +71,6 @@ def findTightlyLinkedConsoles(n: int, consoles: list[tuple[int, int]]) -> list[i if __name__ == '__main__': - print(findTightlyLinkedConsoles(3,[(0,1),(0,4),(2,1),(3,1),(4,2),(2,3)]) == [1,2,3]) - print(findTightlyLinkedConsoles(4,[(0,1),(0,4),(2,1),(3,1),(4,2),(2,3)]) == []) - print(findTightlyLinkedConsoles(4,[(0,1),(0,4),(2,1),(3,1),(4,2),(2,3),(1,4),(4,3)]) == [1,2,3,4]) + print(findTightlyLinkedConsoles(3, [(0, 1), (0, 4), (2, 1), (3, 1), (4, 2), (2, 3)]) == [1, 2, 3]) + print(findTightlyLinkedConsoles(4, [(0, 1), (0, 4), (2, 1), (3, 1), (4, 2), (2, 3)]) == []) + print(findTightlyLinkedConsoles(4, [(0, 1), (0, 4), (2, 1), (3, 1), (4, 2), (2, 3), (1, 4), (4, 3)]) == [1, 2, 3, 4]) diff --git a/src/Ex4.py b/src/Ex4.py index c96bd79..f5810af 100644 --- a/src/Ex4.py +++ b/src/Ex4.py @@ -14,7 +14,7 @@ le calcul récursif puisque cela évite de calculer les états partagés (sous-b identiques) Bonus : -Nous cherchons la valeur N la plus petite telle que: +Nous cherchons la valeur N la plus petite telle que : `computeNbrOfDifferentSequences(N, 5, 100) > 2^16` """ @@ -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())
But...Trouver les placements de pièces Minitris formant un rectangle plein
Input...Largeur de la grille, longueur de la grille, liste des pièces à poser
Output...Liste des positions des pièces
Signature ```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]]: ```