Il existe un "algorithme de tri", parfois appelé tri de Staline, dans lequel, pour trier une liste, il suffit de supprimer des éléments de la liste jusqu'à ce qu'elle soit triée par ordre croissant. Par exemple la liste
[1, 2, 4, 5, 3, 6, 6]
Quand "trié" en utilisant le tri de Staline devient
[1, 2, 4, 5, 6, 6]
Les trois ont été retirés car ils étaient hors d'usage.
Bien évidemment, il existe de nombreuses façons de supprimer des éléments pour trier une liste. Par exemple, toute liste comportant moins de deux éléments doit être triée. En supprimant simplement assez d'éléments à l'aveuglette, nous pouvons toujours trier une liste. Puisque c'est le cas, nous ne nous soucions que du résultat le plus long possible d'un type de Staline.
Votre tâche consistera à prendre une liste d’entiers positifs et à afficher la longueur de la liste triée (croissante) la plus longue à laquelle on puisse parvenir en supprimant des éléments de la liste originale. C'est trouver la longueur de la plus longue sous-liste triée (éventuellement non contiguë).
Les listes triées peuvent avoir le même élément plusieurs fois de suite. Vous n'avez pas besoin de prendre en charge la liste vide à moins que votre programme lui-même ne soit vide.
Notation
Votre réponse sera notée en fonction de la longueur de son propre tri le plus long possible de Staline. Les programmes seront interprétés comme une séquence d'octets plutôt que de caractères, et leur ordre sera celui naturel qui se produit en interprétant les octets sous forme de nombres. Les scores les plus bas sont meilleurs.
Ce n'est pas du code-golf
Voici un outil soigné pour vous aider à noter vos réponses.
Cas de test
[1, 2, 4, 5, 3, 6, 6] -> 6
[19, 2] -> 1
[3, 3, 4, 3] -> 3
[10] -> 1
[1, 2, 4, 9] -> 4
[1, 90, 2, 3, 4, 5] -> 5
[1, 90, 91, 2, 3, 4, 5] -> 5