Comme décrit dans cette question :
Dropsort, conçu par David Morgan-Mar, est un exemple d'un "algorithme de tri" à temps linéaire qui produit une liste qui est en fait triée, mais ne contient que certains des éléments d'origine. Tout élément qui n’est pas au moins aussi grand que le maximum des éléments qui le précèdent est simplement supprimé de la liste et supprimé.
Pour utiliser l' un de leurs cas de test, une entrée de {1, 2, 5, 4, 3, 7}
rendements {1, 2, 5, 7}
, comme 4
et 3
sont à la fois retranchée parce qu'elle est inférieure à la valeur précédemment « trié », 5
.
Nous ne voulons pas de "tri" des algorithmes, nous voulons qu'ils soient la vraie affaire. Par conséquent, je veux que vous écriviez un programme qui, étant donné une liste de numéros, produit une liste de listes DropSorted (comme un algorithme de tri complet, nous aurions besoin de fusionner ces listes, mais la fusion de deux listes triées a été fait avant, et vous demander de le refaire, c'est à peu près poser deux questions, cette question est donc précisément l'étape de "fractionnement" de notre liste déroulante complète).
La disposition et le contenu de nos listes sont toutefois cruciaux. La sortie de votre programme doit être équivalente à la sortie d'un DropSort, suivi d'un DropSort des valeurs ignorées, et ainsi de suite jusqu'à ce que vous n'ayez plus qu'une liste de chaînes triées. Encore une fois, en empruntant la suite de tests existante (et en ajoutant deux autres):
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}}
Vous pouvez supposer que l'entrée est non vide.
C'est code-golf , donc les règles standard s'appliquent!
{3,4,5,3,4,5,3,4,5}
aboutir à {{3,4,5,5,5},{3,4,4},{3}}
?
[5, 4, 3, 8, 7, 6] -> [5, 8], [4,3,7,6]
?