diff --git a/tp_2_miso_mphf.py b/tp_2_miso_mphf.py index a7a07171653d27b369dd98bb88afc1cd628b4353..73849c5f7f9353f55b7dc2e04b9fa794762ded65 100644 --- a/tp_2_miso_mphf.py +++ b/tp_2_miso_mphf.py @@ -8,7 +8,7 @@ import random ###### PARTIE 1 ###### def construction_mphf(set_kmer:set[str], n:int, gamma:float=2, nb_niveaux:int=3) -> list[list[int]]: - + """ Construit une fonction de hachage minimale parfaite (MPHF) pour un ensemble de k-mers. @@ -98,36 +98,36 @@ def get_hash_mphf(mphf, kmer): True """ h = abs(hash(kmer)) - for h-mphf,rang in mphf: - if h-mohf == h : + for h_mphf,rang in mphf: + if h_mphf == h : return rang def create_hash_table(set_kmer, n): - """ - Crée une table de hachage à partir d'un ensemble de k-mers et d'une mphf - - Parameters: - set_kmer (set): Ensemble de k-mers. - n (int): Taille de la table de hachage. - - Returns: - list: Table de hachage créée à partir des k-mers - mphf: la mphf - - Examples: - >>> set_kmer = {'ATCG', 'TGCA', 'GCTA'} - >>> n = 10 - >>> tableau = create_hash_table(set_kmer, n) - >>> len(tableau) == n - True - >>> all(kmer in tableau for kmer in set_kmer) - True - """ - pass # TODO modifier - # créer la mphf pour les kmers - # 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 + """ + Crée une table de hachage à partir d'un ensemble de k-mers et d'une mphf + + Parameters: + set_kmer (set): Ensemble de k-mers. + n (int): Taille de la table de hachage. + + Returns: + list: Table de hachage créée à partir des k-mers + mphf: la mphf + + Examples: + >>> set_kmer = {'ATCG', 'TGCA', 'GCTA'} + >>> n = 10 + >>> tableau = create_hash_table(set_kmer, n) + >>> len(tableau) == n + True + >>> all(kmer in tableau for kmer in set_kmer) + True + """ + mphf = construction_mphf(set_kmer, n) + table = [-1 for i in range(n)] + for h_kmer, rang in mphf: + table[rang] = h_kmer + return table, mphf