"""
Exercice 1:
Ecrire la fonction occurences qui prend en argument une liste l de valeurs et qui renvoie un dictionnaire donnant,
pour chaque valeur apparaissant dans l, le nombre de fois qu'elle apparait dans l.
"""

def occurrence(l):
    d = {}
    for i in l:
        if i in d:
            d[i] += 1
        else:
            d[i] = 1
    return d

print(occurrence([1,3,2,1,4,1,2,1])) # {1: 4, 2:2, 3:1, 4: 1}

"""
Exercice 2 :
Ecrire une fonction plus_frequent(d,k) qui renvoie le mot de k lettres qui est associé dans le dictionnaire d à la plus grande valeur.
En cas d'égalité, on choisira arbitrairement. S'il n'y a aucun mot de k lettres, on renverra une chaine vide.

On pourra utiliser le texte du fichier ltdme80j.txt.
"""

f = open("ltdme80j-p.txt")
texte = f.read().split()
f.close()

def plus_frequent(d,k):
    m = None
    for i, j in d.items():
        if len(i) == k:
            if m == None:
                m = i
            elif d[m] < j:
                m = i
    return m

print(plus_frequent(occurrence(texte),19))


"""
Exercice 3 :
Ecrire une fonction compare_tableaux(t,u) qui determine si deux tableaux contiennent les mêmes éléments, avec pour chacun le même nombre d'occurence.
"""

def compare_tableaux(t,u):
    d1 = occurrence(t)
    d2 = occurrence(u)

    for i in d1.keys():
        if i not in d2:
            return False
        elif d1[i] != d2[i] :
            return False

    for i in d2.keys():
        if i not in d1:
            return False
        elif d1[i] != d2[i] :
            return False

    return True

print(compare_tableaux([1,3,2,1,4,1,2,1],[1,3,2,1,4,1,2,5])) # False
print(compare_tableaux([1,3,2,1,4,1,2,1],[1,3,2,1,4,1,2,2])) # False
print(compare_tableaux([1,3,2,1,4,1,2,1],[1,3,2,1,4,1,2,1])) # True


"""
Exercice 4 :
Vérifier que la fonction occurences (exercice 1) fonctionne aussi sur les chaines de charactères.
Que renvoie occurrences("tagada") ?
"""

print(occurrence("tagada"))

