이 질문에 설명 된대로 :
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]
?