# Examen 2025
---
_**201.1 Algorithmes et Structures de données**_

Voici mes réponses pour l'examen 2025 d'_Algorithmes et Structures de données_ ainsi que les tests unitaires fournis.
## Exercice 1
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 countKey(
pieces: list[int]
) -> int:
```
|
[Source](https://git.kb28.ch/HEL/AlgoDS-Examen2025/src/branch/main/src/Ex1.py)
/
[Tests](https://git.kb28.ch/HEL/AlgoDS-Examen2025/src/branch/main/tests/test_ex1.py)
## Exercice 2
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 findSafestPath(
start: int,
end: int,
intersections: list[tuple[int, int, int]]
) -> list[int]:
```
|
[Source](https://git.kb28.ch/HEL/AlgoDS-Examen2025/src/branch/main/src/Ex2.py)
/
[Tests](https://git.kb28.ch/HEL/AlgoDS-Examen2025/src/branch/main/tests/test_ex2.py)
## Exercice 3
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 findTightlyLinkedConsoles(
n: int,
consoles: list[tuple[int, int]]
) -> list[int]:
```
|
[Source](https://git.kb28.ch/HEL/AlgoDS-Examen2025/src/branch/main/src/Ex3.py)
/
[Tests](https://git.kb28.ch/HEL/AlgoDS-Examen2025/src/branch/main/tests/test_ex3.py)
## Exercice 4
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 computeNbrOfDifferentSequences(
N: int,
C: int,
H: int
) -> int:
```
|
[Source](https://git.kb28.ch/HEL/AlgoDS-Examen2025/src/branch/main/src/Ex4.py)
/
[Tests](https://git.kb28.ch/HEL/AlgoDS-Examen2025/src/branch/main/tests/test_ex4.py)
## Exercice 5
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 playMinitrisFastAndWell(
board_width: int,
board_height: int,
pieces: list[tuple[tuple[int,int], tuple[int,int]]]
) -> list[list[int, int]]:
```
|
[Source](https://git.kb28.ch/HEL/AlgoDS-Examen2025/src/branch/main/src/Ex5.py)
/
[Tests](https://git.kb28.ch/HEL/AlgoDS-Examen2025/src/branch/main/tests/test_ex5.py)