diff --git a/tp_2_miso_mphf.py b/tp_2_miso_mphf.py index a87b4448dec251dfb5272f5310016374a6bc721e..18df0ab9a04d1e6bb1c80f1a97da69845785b5b8 100644 --- a/tp_2_miso_mphf.py +++ b/tp_2_miso_mphf.py @@ -46,7 +46,7 @@ def construction_mphf(set_kmer, n, gamma=2, nb_niveaux=3): if tableau_principal[address] != -1: collision.add(kmer) else : - tableau_principal[address] = kmer + tableau_principal[address] = h tableaux.append(tableau_principal) # Addition du tableau du dernier niveau dans un tableau contenant tous les tableaux des précédents niveaux set_kmer_courant = collision.copy() # Création d'un set de kmer à partir des collisions pour créer tableau du niveau suivant @@ -58,17 +58,16 @@ def construction_mphf(set_kmer, n, gamma=2, nb_niveaux=3): for tableau in tableaux: grand_tableau.extend(tableau) # Concaténation de tous les tableaux de niveaux - rangs = [] + max_rang = 0 - i = 0 + for kmer in set_kmer: - pass # compléter: - # hacher le kmer - # si le hash est dans le grand_tableau - # récupérer son index - # récupérer son rang (utiliser la fonction count()) - # ajouter à la mphf [h, rang] - # mettre à jour max_rang + h = hash(kmer) + if h in grand_tableau: + index = grand_tableau.index(h) + rang = index - grand_tableau[:index + 1].count(-1) + mphf.append((h, rang)) + max_rang = max(max_rang, rang) for kmer in set_kmer_courant: #gestion des collisions: expliquer les 3 lignes du dessous max_rang += 1