user
Comment écrire une fonction Python strict_monotone qui prend une liste d'entiers en paramètre et renvoyant True si elle est strictement monotone et False sinon ?
alphonsio

Une séquence est dite strictement monotone si elle est soit strictement croissante, soit strictement décroissante. Pour créer une fonction strict_monotone qui vérifie ce critère dans une liste d'entiers, nous devons vérifier les deux conditions possibles et déterminer si l'une d'entre elles est satisfaite.

Voici comment tu peux implémenter cela en Python :

def strict_monotone(liste):
    if len(liste) < 2:
        # Une liste avec moins de 2 éléments est considérée comme monotone
        return True
    
    is_increasing = True
    is_decreasing = True
    
    for i in range(len(liste) - 1):
        if liste[i] >= liste[i + 1]:  # Si la série n'est pas strictement croissante
            is_increasing = False
        if liste[i] <= liste[i + 1]:  # Si la série n'est pas strictement décroissante
            is_decreasing = False
    
    return is_increasing or is_decreasing

# Exemples d'utilisation :
print(strict_monotone([1, 2, 3, 4]))  # Renvoie True (strictement croissant)
print(strict_monotone([4, 3, 2, 1]))  # Renvoie True (strictement décroissant)
print(strict_monotone([1, 2, 2, 3]))  # Renvoie False (ni strictement croissant, ni décroissant)
print(strict_monotone([1]))           # Renvoie True (considéré comme monotone)
print(strict_monotone([]))            # Renvoie True (considéré comme monotone)

Cette fonction initialise deux drapeaux (is_increasing et is_decreasing) à True. Elle parcourt la liste et ajuste ces valeurs en fonction des comparaisons entre les éléments adjacents. Si un élément n'est pas strictement croissant ou décroissant par rapport à son successeur, le drapeau approprié est mis à False. La liste est strictement monotone si au moins un des deux drapeaux reste True à la fin.

Testez le code en ligne :