# Exercice 6

#def gagnant(score1:float, score2:float) -> str:
def gagnant(score1:int, score2:int) -> str:
    """ Prend en paramètre les scores des deux joueurs et retourne si le joueur 1 ou 2 est gagnant 
        ou s'il y a un ex æquo.
        
        >>> gagnant(1, 0)
        'Joueur 1'
        >>> gagnant(0, 1)
        'Joueur 2'
        >>> gagnant(1, 1)
        'ex æquo'
    """
    
    # assert type(score1) == float, "Les score doivent être des nombres décimaux."
    # assert type(score2) == float, "Les score doivent être des nombres décimaux."
    assert type(score1) == int, "Les score doivent être des nombres entiers."
    assert type(score2) == int, "Les score doivent être des nombres entiers."
    
    if score1 > score2:
        return "Joueur 1"
    elif score1 < score2:
        return "Joueur 2"
    else:
        return "ex æquo"

from math import sqrt

#def distance(A:list, B:list) -> float :
def distance(A:tuple, B:tuple) -> float :
    """ Prend en paramètre 2 tuples de deux valeurs contenant les coordonnées (x, y) des points A et B
        et retourne la distance euclidienne entre ceux deux points
        
        >>> distance((0,0), (1,1))
        1.4142135623730951
        >>> distance((0,4), (0,6))
        2.0
        >>> distance((6,0), (4,0))
        2.0
    """
    
    # assert type(A) == list, "Les coordonnées doivent être des listes."
    # assert type(B) == list, "Les coordonnées doivent être des listes."
    assert type(A) == tuple, "Les coordonnées doivent être des tuples."
    assert type(B) == tuple, "Les coordonnées doivent être des tuples."

    xA = A[0]
    yA = A[1]
    xB = B[0]
    yB = B[1]
    return sqrt((xB - xA)**2 + (yB - yA)**2)


# def puissance(valeur:float, exposant:int) -> list:
def puissance(valeur:int, exposant:int) -> list:
    """ Retourne une liste contenant toutes les puissances de valeurs avec des exposants de 1 à exposant inclu.
        
        >>> puissance(0, 0)
        []
        >>> puissance(0, 3)
        [0, 0, 0]
        >>> puissance(2, 2)
        [2, 4]
        >>> puissance(-2, 2)
        [-2, 4]
    """
    
    #assert type(valeur) == float, "La valeur doit être un nombre décimal."
    assert type(valeur) == int, "La valeur doit être entière."
    assert type(exposant) == int, "L'exposant doit être entier."

    l = []
    for i in range(1, exposant + 1):
        l.append(valeur**i)
    return l
