Як описано в цьому запитанні :
Dropsort, розроблений Девідом Морган-Мар, є прикладом лінійного "алгоритму сортування" за лінійним часом, який створює список, який насправді відсортований, але містить лише деякі оригінальні елементи. Будь-який елемент, який не менше як максимум елементів, що передують йому, просто видаляється зі списку та відкидається.
Для того, щоб використовувати один зі своїх тестових прикладів, введення {1, 2, 5, 4, 3, 7}
врожайності {1, 2, 5, 7}
, як 4
і 3
обидва впали за те , що менше , ніж раніше «упорядковано» значення, 5
.
Ми не хочемо "сортувати" алгоритми, ми хочемо, щоб вони були справжньою угодою. Тому я хочу, щоб ви написали програму, яка, виходячи зі списку чисел, виводить список списків DropSorted (щоб бути повноцінним алгоритмом сортування, нам потрібно було б об'єднати ці списки, але об'єднання двох відсортованих списків було зроблено раніше, і прошу вас зробити це ще раз, задаючи два запитання, тому це питання є конкретно кроком "розщеплення" нашого повного DropSort).
Впорядкування та зміст наших списків є вирішальним. Вихід вашої програми повинен бути еквівалентний виводу DropSort, за яким слідує DropSort відкинутих значень тощо, поки у вас є лише список відсортованих ланцюгів. І знову запозичення існуючого тестового набору (та додавання ще двох):
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}}
Ви можете припустити, що введення не порожнє.
Це код-гольф , тому застосовуються стандартні правила!
{3,4,5,3,4,5,3,4,5}
призвести до {{3,4,5,5,5},{3,4,4},{3}}
?
[5, 4, 3, 8, 7, 6] -> [5, 8], [4,3,7,6]
?