Como se describe en esta pregunta :
Dropsort, diseñado por David Morgan-Mar, es un ejemplo de un "algoritmo de clasificación" de tiempo lineal que produce una lista que, de hecho, está ordenada, pero contiene solo algunos de los elementos originales. Cualquier elemento que no sea al menos tan grande como el máximo de los elementos que lo preceden simplemente se elimina de la lista y se descarta.
Para utilizar una de sus casos de prueba, una entrada de {1, 2, 5, 4, 3, 7}
rendimientos {1, 2, 5, 7}
, como 4
y 3
están ambos cayó por ser más pequeño que el previamente "ordenados" valor, 5
.
No queremos algoritmos de "clasificación", queremos que sean el verdadero negocio. Por lo tanto, quiero que escriba un programa que, dada una lista de números, genere una lista de listas DropSorted (para ser un algoritmo de ordenación completo, necesitaríamos fusionar estas listas, pero antes se había fusionado dos listas ordenadas , y pedirle que lo vuelva a hacer es más o menos dos preguntas, por lo que esta pregunta es específicamente el paso de "división" de nuestro DropSort completo).
Sin embargo, la disposición y el contenido de nuestras listas es crucial. La salida de su programa debe ser equivalente a la salida de un DropSort, seguido de un DropSort de los valores descartados, y así sucesivamente hasta que solo tenga una lista de cadenas ordenadas. Nuevamente, tomando prestado el conjunto de pruebas existente (y agregando dos más):
Input -> Output
{1, 2, 5, 4, 3, 7} -> {{1, 2, 5, 7}, {4}, {3}}
{10, -1, 12} -> {{10, 12}, {-1}}
{-7, -8, -5, 0, -1, 1} -> {{-7, -5, 0, 1}, {-8, -1}}
{9, 8, 7, 6, 5} -> {{9}, {8}, {7}, {6}, {5}}
{10, 13, 17, 21} -> {{10, 13, 17, 21}}
{10, 10, 10, 9, 10} -> {{10, 10, 10, 10}, {9}} //Note equivalent values aren't dropped
{5, 4, 3, 8, 7, 6} -> {{5, 8}, {4, 7}, {3, 6}}
{0, 2, 5, 4, 0, 7} -> {{0, 2, 5, 7}, {4}, {0}}
Puede suponer que la entrada no está vacía.
Este es el código de golf , por lo que se aplican reglas estándar.
{3,4,5,3,4,5,3,4,5}
resultar en {{3,4,5,5,5},{3,4,4},{3}}
?
[5, 4, 3, 8, 7, 6] -> [5, 8], [4,3,7,6]
?