이 질문에 설명 된대로 :
David Morgan-Mar이 디자인 한 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}}
입력이 비어 있지 않은 것으로 가정 할 수 있습니다.
이것은 code-golf 이므로 표준 규칙이 적용됩니다!
{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]?