Skip to content
Snippets Groups Projects
Commit 4fdf4060 authored by Mamadou Diallo's avatar Mamadou Diallo
Browse files

modification de la fonction create_hash_table

parent 637d02db
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (notebook4)" project-jdk-type="Python SDK" />
<component name="Black">
<option name="sdkName" value="Python 3.13 (tp2-hachage)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.13 (tp2-hachage)" project-jdk-type="Python SDK" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.venv" />
<excludeFolder url="file://$MODULE_DIR$/.venv1" />
</content>
<orderEntry type="jdk" jdkName="Python 3.13 (tp2-hachage)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="PyDocumentationSettings">
......
File added
......@@ -141,11 +141,29 @@ def create_hash_table(set_kmer, n):
>>> all(kmer in tableau for kmer in set_kmer)
True
"""
pass # TODO modifier
# créer la mphf pour les kmers
def MPH(kmer): # On peut pas hacher un set directement
return hash(kmer) % n # une fonction MPH qui calcule un index pour chaque kmer
# initialiser un tableau de taille n (une liste)
# écrire les kmers aux adresses du tableau données par la mphf
# retourner le tableau et la mphf
tableau = [None] * n
for kmer in set_kmer:
index = MPH(kmer)
initial_index = index #Sauvegarde de l'index initial pour eviter une boucle infinie
#Recherche d'une case libre avec linear probing (résolution des collisions)
while tableau[index] is not None: # écrire les kmers aux adresses du tableau données par la mphf
index = (index + 1) % n # on boucle à zero si on atteint la fin
if index == initial_index:
raise RuntimeError("La table de achage est pleine. Essayez avec une taille plus grande.")
tableau[index] = kmer #Insérer le k-mer
return tableau, MPH # retourner le tableau et la mphf
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment