From d6d4c055544ed9d0307429c98ad1593d59aa66ed Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Fri, 24 Jan 2025 16:29:11 +0100 Subject: [PATCH] added README --- README.md | 150 +++++++++++++++++++++++++++++++++++++++++++ src/ex4_furniture.py | 22 ------- 2 files changed, 150 insertions(+), 22 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..a9a85cd --- /dev/null +++ b/README.md @@ -0,0 +1,150 @@ +# Examen 2024 + +--- +_**201.1 Algorithmes et Structures de données**_ + +![unit tests workflow](https://git.kb28.ch/HEL/AlgoDS-Examen2024/actions/workflows/tests.yaml/badge.svg) + +Voici mes réponses pour l'examen 2024 d'_Algorithmes et Structures de données_ ainsi que les tests unitaires fournis. + +## Exercice 1 + + + + + + + + + + + + + + + + + + +
ButCompter le nombre de triangles dans un graphe
InputListe des arêtes du graphe
OutputNombre de triangles
Signature + +```python +def countTriangles( + edges: list[tuple[int, int]] +) -> int: +``` + +
+ +[Source](https://git.kb28.ch/HEL/AlgoDS-Examen2024/src/branch/main/src/ex1_triangles.py) +/ +[Tests](https://git.kb28.ch/HEL/AlgoDS-Examen2024/src/branch/main/tests/test_ex1.py) + + +## Exercice 2 + + + + + + + + + + + + + + + + + + +
ButCalculer le plus grand nombre d'émission complète consécutives qui peuvent être enregistrée sur un disque de taille finie
InputListe des durées des émissions, durée d'enregistrement totale maximum
OutputNombre d'émission consécutives complètes enregistrables maximum
Signature + +```python +def startRecordingAt( + tv_show: list[int], + hard_drive_memory: int +) -> int: +``` + +
+ +[Source](https://git.kb28.ch/HEL/AlgoDS-Examen2024/src/branch/main/src/ex2_tv.py) +/ +[Tests](https://git.kb28.ch/HEL/AlgoDS-Examen2024/src/branch/main/tests/test_ex2.py) + + +## Exercice 3 + + + + + + + + + + + + + + + + + + +
ButCalculer le score maximum en prenant tour à tour un des côtés d'une série de cartes
InputListe des cartes (valeurs)
OutputScore maximum face à un adversaire optimal
Signature + +```python +def tauntScore( + cards: list[int] +) -> int: +``` + +
+ +[Source](https://git.kb28.ch/HEL/AlgoDS-Examen2024/src/branch/main/src/ex3_cards.py) +/ +[Tests](https://git.kb28.ch/HEL/AlgoDS-Examen2024/src/branch/main/tests/test_ex3.py) + + +## Exercice 4 + + + + + + + + + + + + + + + + + + +
ButTrouver la meilleure manière de déplacer des meubles d'un agencement donné à un autre
Input + +Agencement actuel, agencement final\ +(grille de valeurs, 0=vide, `i`=meuble n°`i`) + +
OutputListe des états intermédiaires
Signature + +```python +def minimumMoves( + current_plan: list[list[int]], + target_plan: list[list[int]] +) -> list[list[list[int]]]: +``` + +
+ +[Source](https://git.kb28.ch/HEL/AlgoDS-Examen2024/src/branch/main/src/ex4_furniture.py) +/ +[Tests](https://git.kb28.ch/HEL/AlgoDS-Examen2024/src/branch/main/tests/test_ex4.py) diff --git a/src/ex4_furniture.py b/src/ex4_furniture.py index bd6e0ce..d00f1ae 100644 --- a/src/ex4_furniture.py +++ b/src/ex4_furniture.py @@ -62,17 +62,13 @@ class Furniture: class State: def __init__( self, - #plan: list[list[int]], width: int, height: int, furniture: dict[id, Furniture], parent: Optional[State] = None ): - #self.plan: list[list[int]] = plan self.furniture: dict[id, Furniture] = furniture self.parent: Optional[State] = parent - #self.width: int = len(plan[0]) - #self.height: int = len(plan) self.width: int = width self.height: int = height @@ -93,7 +89,6 @@ class State: for i, tiles in furniture.items() } - #return State(plan, furniture2) return State(width, height, furniture2) def to_list(self) -> list[list[int]]: @@ -113,22 +108,6 @@ class State: return self.parent.get_depth() + 1 def apply_move(self, id: int, offset: tuple[int, int]) -> Optional[State]: - #new_plan: list[list[int]] = [[0] * self.width for _ in range(self.height)] - - """ - for y, row in enumerate(self.plan): - for x, tile in enumerate(row): - if tile == id: - x2, y2 = x + offset[0], y + offset[1] - if x2 < 0 or x2 >= self.width or y2 < 0 or y2 >= self.height: - return None - if new_plan[y2][x2] not in (0, id): - return None - new_plan[y2][x2] = id - new_plan[y][x] = 0 - else: - new_plan[y][x] = tile - """ plan: list[list[int]] = self.to_list() furn2: Furniture = self.furniture[id].move(offset) for tx, ty in furn2.get_tiles(): @@ -192,7 +171,6 @@ def minimumMoves(current_plan: list[list[int]], target_plan: list[list[int]]) -> current_state = State.from_list(current_plan) target_state = State.from_list(target_plan) - states: list[State] = [current_state] while len(states) != 0: new_states: list[State] = []