Esiste un "algoritmo di ordinamento" a volte chiamato ordinamento Stalin in cui per ordinare un elenco è sufficiente rimuovere gli elementi dall'elenco fino a quando non viene ordinato in ordine crescente. Ad esempio l'elenco
[1, 2, 4, 5, 3, 6, 6]
Quando "ordinato" utilizzando Stalin l'ordinamento diventa
[1, 2, 4, 5, 6, 6]
I tre furono rimossi perché erano fuori servizio.
Ora ovviamente ci sono molti modi per rimuovere elementi per ordinare un elenco. Ad esempio, qualsiasi elenco con meno di due elementi deve essere ordinato, quindi rimuovendo ciecamente abbastanza elementi ci si può sempre ordinare un elenco. Dal momento che questo è il caso, ci preoccupiamo solo del risultato più lungo possibile di un tipo Stalin.
Il tuo compito sarà quello di prendere un elenco di numeri interi positivi e produrre la lunghezza dell'elenco (crescente) più lungo ordinato che può essere ottenuto rimuovendo elementi dall'elenco originale. Cioè trova la lunghezza della sotto-lista ordinata più lunga (possibilmente non contigua).
Gli elenchi ordinati possono avere lo stesso elemento più di una volta di fila. Non è necessario supportare l'elenco vuoto a meno che il programma stesso non sia vuoto.
punteggio
La tua risposta verrà valutata in base alla lunghezza del suo ordinamento Stalin più lungo possibile. I programmi saranno interpretati come una sequenza di byte anziché come caratteri, e il loro ordine sarà quello naturale che sorgerà interpretando i byte come numeri. I punteggi più bassi sono migliori.
Questo non è code-golf
Ecco uno strumento accurato per aiutarti a segnare le tue risposte.
Casi 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