From 455bbdff974d16a5c5cc00750cc44eaf38797c88 Mon Sep 17 00:00:00 2001
From: Orestis <orestis.malaspinas@pm.me>
Date: Mon, 26 Feb 2024 10:28:28 +0100
Subject: [PATCH] maj 2024

---
 slides/cours_14.md | 181 ---------------------------------------------
 slides/intro.md    |  12 +--
 2 files changed, 6 insertions(+), 187 deletions(-)

diff --git a/slides/cours_14.md b/slides/cours_14.md
index b77b9c3..5b1b433 100644
--- a/slides/cours_14.md
+++ b/slides/cours_14.md
@@ -572,184 +572,3 @@ Avantages:
 * On suppose que la table est initialement vide, de taille $n = 13$.
 * Utiliser la fonction $h1(k)= k \mod 13$ où k est la $k$-ème lettre de l'alphabet et un traitement séquentiel des collisions.
 
-# Exercice 2
-
-* Reprendre l'exercice 1 et utiliser la technique de double hachage pour traiter
-  les collisions avec
-
-\begin{align*}
-h_1(k)&=k\mod 13,\\
-h_2(k)&=1+(k\mod 11).
-\end{align*}
-* La fonction de hachage est donc $h(k)=(h(k)+h_2(k)) \% 13$ en cas de
-  collision.
-
-
-# Exercice 3
-
-* Stocker les numéros de téléphones internes d'une entreprise suivants dans un
-tableau de 10 positions.
-* Les numéros sont compris entre 100 et 299.
-* Soit $N$ le numéro de téléphone, la fonction de hachage est
-$$
-h(N)=N\mod 10.
-$$
-* La fonction de gestion des collisions est
-$$
-C_1(N,i)=(h(N)+3\cdot i)\mod 10.
-$$
-* Placer 145, 167, 110, 175, 210, 215 (mettre son état à occupé).
-* Supprimer 175 (rechercher 175, et mettre son état à supprimé).
-* Rechercher 35.
-* Les cases ni supprimées, ni occupées sont vides.
-* Expliquer se qui se passe si on utilise?
-$$
-C_1(N,i)=(h(N)+5\cdot i)\mod 10.
-$$
-
-# Préambule
-
-\small
-
-* On considère pas le cas du chaînage en cas de collisions.
-* L'insertion est construite avec une forme du type
-
-    ```C
-    index = h(key);
-    while (table[index].state == OCCUPIED 
-           && table[index].key != key) {
-       index = (index + k) % table_size; // attention à pas dépasser
-    }
-    table[index].key = key;
-    table[index].state = OCCUPIED;
-    ```
-\normalsize
-
-* Gestion de l'état d'une case *explicite*
-
-    ```C
-    typedef enum {EMPTY, OCCUPIED, DELETED} state;
-    ```
-
-# L'insertion
-
-## Pseudocode?
-
-. . .
-
-```C
-insert(table, key, value) {
-    index = hash de la clé;
-    index = 
-        si "index" est déjà "occupé"
-        et la clé correspondante n'est pas "key"
-        alors gérer la collision;
-
-    changer l'état de la case "index" à "occupé";
-    changer la valeur de la case "index" à "value";
-}
-```
-
-# La suppression
-
-## Pseudocode?
-
-. . .
-
-```C
-value_t remove(table, key) {
-    index = hash de la clé;
-    tant que l'état de la case n'est pas "vide"
-        si "index" est "occupé" et la clé est "key" 
-            changer l'état de la case à "supprimé"
-        sinon
-            index = rehash
-}
-```
-
-# La recherche
-
-## Pseudocode?
-
-. . .
-
-```C
-bool search(table, key, value) {
-    index = hash de la clé;
-    tant que l'état de la case n'est pas "vide"
-        si "index" est "occupé" et la clé est "key" 
-            retourner vrai
-        sinon
-            index = rehash
-}
-```
-
-# Écrivons le code!
-
-* Mais avant:
-    * Quelles sont les structures de données dont nous avons besoin?
-    * Y a-t-il des fonctions auxiliaires à écrire?
-    * Écrire les signatures des fonctions.
-
-. . .
-
-## Structures de données
-
-\footnotesize
-
-. . .
-
-```C
-typedef enum {empty, deleted, occupied};
-typedef ... key_t;
-typedef ... value_t;
-typedef struct _cell_t {
-    key_t key; 
-    value_t value;
-    state_t state;
-} cell_t;
-typedef struct _hm {
-    cell_t *table;
-    int capacity;
-    int size;
-} hm;
-```
-
-# Écrivons le code!
-
-## Fonctions auxiliaires
-
-. . .
-
-```C
-static int hash(key_t key);
-static int rehash(int index, key_t key);
-static int find_index(hm h, key_t key);
-```
-
-##  Signature de l'API 
-
-. . .
-
-```C
-void hm_init(hm *h, int capacity);
-void hm_destroy(hm *h);
-bool hm_set(hm *h, key_t key, value_t *value);
-bool hm_get(hm h, key_t key, value_t *value);
-bool hm_remove(hm *h, key_t key, value_t *value);
-bool hm_search(hm h, key_t key);
-void hm_print(hm h);
-```
-
-# Live code session! 
-
-0. Offered to you by ProtonVPN[^1]!
-
-. . .
-
-1. Like the video.
-2. Subscribe to the channel.
-3. Use our one time voucher for ProtonVPN: `PAULISAWESOME`.
-4. Consider donating on our patreon.
-
-[^1]: The fastest way to connect to BBB!
\ No newline at end of file
diff --git a/slides/intro.md b/slides/intro.md
index 3b3f7ad..d345565 100644
--- a/slides/intro.md
+++ b/slides/intro.md
@@ -11,13 +11,12 @@ Paul Albuquerque       paul.albuquerque@hesge.ch         B410
 Orestis Malaspinas     orestis.malaspinas@hesge.ch       A401
 --------------------   ------------------------------    --------------------
 
-* Utilisez le libre service (l'horaire sera fixé prochainement).
-* On va intensivement utiliser *Element*, installez le et utilisez le!
-
-* Espace de discussion [Matrix](https://matrix.to/#/!aKYVlcclmPGYXQFxAK:matrix.org?via=matrix.org), installez [element.io](https://element.io).
+- Utilisez le libre service (l'horaire sera fixé prochainement).
+- On va intensivement utiliser *Element*, installez le et utilisez le!
+- Espace de discussion Matrix: <https://rb.gy/ku5es>, installez [element.io](https://element.io).
 
     ![](figs/matrix_qr.png){width=20%}
-* Communauté lemmy: <https://lemmy.hepiapp.ch/c/algo>
+- Communauté lemmy: <https://lemmy.hepiapp.ch/c/algo>
 
 # Cyberlearn
 
@@ -34,7 +33,8 @@ Tout le contenu de ce qu'on raconte se trouve sur cyberlearn:
 
 # Organisation du module
 
-* Cinq cours, 20% chacun.
+## Cinq cours, 20% chacun.
+
 1. Algorithmes et structures de données (2 semestres):
     * 1er semestre:
         * bases de programmation en C jusqu'à Noël.
-- 
GitLab