
def bad_carac_horspool(motif):
    """
    motif - str, chaîne de caractères
    Sortie: dict - dictionnaire tel que :
                 - les clefs sont les caractères de motif
                 - les valeurs associées sont leur indice "le plus à droite" dans motif
            Le dernier caractère de motif n'est pas parcouru
    
    >>> motif = 'CAAGT'
    >>> bad_carac_horspool(motif)
    {'C': 0, 'A': 2, 'G': 3}
    """
    pass


def decalage_horspool(motif, texte, i, j, bad_carac):
    """
    motif - str, chaîne de caractères
    texte - str, chaîne de caractères
    i - int, position de la fenêtre telle que 0 <= i < len(texte)
    j - int, entier tel que 0 <= j < len(motif)
    bad_carac - dict, dictionnaire des mauvais caractères (Horspool)
    Sortie: int - décalage à appliquer à la fenêtre en cas de non correspondance
                    entre texte[i+j] et motif[j]
    
    >>> motif = 'CAAGT'
    >>> texte = 'ATCAAGTTCAAGTCAGTCCCCAAGTTGATGCAAGT'
    >>> bad_carac = {'C': 0, 'A': 2, 'G': 3}
    >>> decalage_horspool(motif, texte, 7, 2, bad_carac)
    1
    >>> decalage_horspool(motif, texte, 13, 4, bad_carac)
    4
    """
    pass



def est_present_horspool(motif, texte):
    """
    motif - str, chaîne de caractères
    texte - str, chaîne de caractères
    Sortie: bool - True si motif est dans texte, False sinon
            Recherche selon les principes de Horspool
    
    >>> motif = 'CAAGT'
    >>> texte = 'ATCAAGTTCAAGTCAGTCCCCAAGTTGATGCAAGT'
    >>> est_present_horspool(motif, texte)
    True
    """
    pass



def nb_occurrences_horspool(motif, texte):
    """
    motif - str, chaîne de caractères
    texte - str, chaîne de caractères
    Sortie: int - Nombre d'occurrences de motif dans texte
            Recherche selon les principes de Horspool
    
    >>> motif = 'CAAGT'
    >>> texte = 'ATCAAGTTCAAGTCAGTCCCCAAGTTGATGCAAGT'
    >>> nb_occurrences_horspool(motif, texte)
    4
    """
    pass


def positions_horspool(motif, texte):
    """
    motif - str, chaîne de caractères
    texte - str, chaîne de caractères
    Sortie: list - Tableau des positions où trouver motif dans texte
    
    >>> motif = 'CAAGT'
    >>> texte = 'ATCAAGTTCAAGTCAGTCCCCAAGTTGATGCAAGT'
    >>> positions_horspool(motif, texte)
    [2, 8, 20, 30]
    """
    pass



def nb_comparaisons_horspool(motif, texte):
    """
    motif - str, chaîne de caractères
    texte - str, chaîne de caractères
    Sortie: int - Nombre de comparaisons nécessaires pour
            déterminer les positions où trouver motif dans texte
            selon l'algorithme de recherche textuelle simplifié de Horspool
    
    >>> motif = 'CAAGT'
    >>> texte = 'ATCAAGTTCAAGTCAGTCCCCAAGTTGATGCAAGT'
    >>> nb_comparaisons_horspool(motif, texte)
    32
    """
    pass



def affichage_horspool(motif, texte):
    """
    motif - str, chaîne de caractères
    texte - str, chaîne de caractères
    Sortie: None - Affichage des alignements obtenus
            selon l'algorithme de recherche textuelle simplifié de Horspool
    
    >>> motif = 'CAAGT'
    >>> texte = 'ATCAAGTTCAAGTCAGTCCCCAAGTTGATGCAAGT'
    >>> affichage_horspool(motif, texte)
    ATCAAGTTCAAGTCAGTCCCCAAGTTGATGCAAGT
    CAAGT
      CAAGT
       CAAGT
           CAAGT
            CAAGT
             CAAGT
                 CAAGT
                     CAAGT
                       CAAGT
                        CAAGT
                         CAAGT
                             CAAGT
                              CAAGT
                                  CAAGT
    """
    pass


if __name__ == '__main__':
    import doctest
    doctest.testmod()
    
    # A compléter par des tests supplémentaires,
    # autres que ceux donnés en exemples
