Problématique python

Résolu/Fermé
Alexx - 10 févr. 2022 à 16:58
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 - 10 févr. 2022 à 18:28
Salut,
Je dois écrire une fonction max(L) qui, pour une int-liste L donnée de longueur n≥1, renvoie la longueur maximale d'une suite unimodulaire. (une suite est dite unimodulaire dans le cas où a0≤a1≤...≤ai≥ai+1≥...ad ) Par exemple : L=[1,2,3,2,1,3,6,3,6] L contient deux séquences unimodulaires : 1,2,3,2,1 de longueur 5 et 1,3,6,3 de longueur 4. La première a une longueur maximale, donc max(L) devrait retourner la valeur 5. Si vous avez des idées, partagez-les avec moi ! Merci.

Mon idée était d'abord de convertir la liste en une chaîne de caractères pour voir où elle est ascendante, descendante ou stable :


def ads(L):
def _ads(L):
for a, b in zip(L, L[1:]): #a:ascending d:descending s:stable
yield 'a' if a < b else ('s' if a == b else 'd')
ads= ''.join(_ads(L))
print(ads)


par exemple, si L=[4,5,3,2,1,1,3,6,4,7], on obtient 'adddsaada'.

1 réponse

yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 Ambassadeur 1 554
10 févr. 2022 à 17:51
bonjour,
que penses-tu faire ensuite?
0
Je pense d'abord diviser la liste quand elle est ascendante puis voir si dans chaque sous-liste il y a une séquence unimodulaire ou non, c'est-à-dire si dans chaque liste après le 'a' vient le 'd' ou non (sans oublier s'il y a répétition de la même lettre 's').
et ensuite extraire les séquences unimodulaires que j'ai et comparer leur longueur.
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554 > Alexx
10 févr. 2022 à 18:28
As-tu mis cela en pratique?
0