Résolution de problème

Lien des tests : https://colab.research.google.com/drive/19rgPCHlixMgYWtJ8LCPuh9KingE5j6-C#scrollTo=mTUUmq6KV0KU

Fonction croissante renvoyant True si la liste est croissante et False si non : 

La valeur en sortie est donc booléenne.

La fonction est documentée avec les arguments de l’entrée et de la sortie :

Un docsstring a été ajouté pour avoir une aide sur la fonction :

Pour avoir une aide sur la fonction il suffit d’utiliser la fonction help()

Quelques tests :

⚠ Attention : l’indice et sa valeur représentent deux nombres distincts

Exemple : si l’on a besoin d’indice(s) :

Exemple : si l’on a besoin de valeur(s) :

Autre fonction : on souhaite garder les valeurs qui « correspondent » à 1 et enlever celles qui « correspondent » à 0 :

Énumérons toutes les sous suites possibles d’une suite

Nous avons 2 choix possibles pour chacun des immeubles de la suite (conserver ou démolir) donc 2n  choix possibles.

Un nombre binaire k de n bits (avec un bit à 1 pour conserver et à 0 pour démolir) peut représenter une sous suite.

Exemple : avec la suite [1,2,6,5], on souhaite coder la sous suite [1,2]

On écrira 1100 pour conserver 1 et 2 et démolir 6 et 5.

La suite est constituée de 4 immeubles on donc 24 sous suites au total soit 16

La sous suite obtenue après démolition est représentée par [1,2]

Codons une fonction sous_suite()

  • en entrée 2 arguments une suite (liste x) et un entier (k de type int) représentant une sous suite
  • en sortie une variable b de type list représentant la sous suite.

Test de la fonction :

On peut maintenant exploiter notre fonction pour lister toutes les sous suites possibles :

Test :

Trouver une plus grande sous suite parmi celles qui sont croissantes

Petit brouillon 🤔 :

Suite x longueur n

sous suites (2**n) représentés par un entier k ; 0<=k<=2**n

x=[5,2,6] ; n=3

2**3=8 sous suites possibles

k=0 –> 0/0/0 –> []

k=1 –> 0/0/1 –> [6]

k=2 –> 0/1/0 –> [2]

k=3 –> 0/1/1 –> [2,6]

k=4 –> 1/0/0 –> [5]

k=5 –> 1/0/1 –> [5,6]

k=6 –> 1/1/0 –> [5,2]

k=7 –> 1/1/1 –> [5,2,6]

« Tant que le programme ne trouve pas de sous suite croissante plus longue, il garde la précédente ».

Programme final 😯 :

Corrigé :

Test de la fonction sur des listes aléatoires :

2 réponses

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *