객관적인
삽입 정렬 이 정렬 을 수행 하는 동작에서 원래 스크램블 목록을 생성하십시오 . 원본 목록 에는 입력의 크기 인 모든 숫자가 포함 0
됩니다 N-1
(포함) N
.
입력
목록을 정렬하는 데 필요한 이동이 포함 된 목록입니다. 각 값은 원래 (스크램블 된) 숫자로 대체 된 슬롯의 양이 올바른 위치에 있음을 나타냅니다.이 프로세스는 왼쪽에서 오른쪽입니다. 입력 목록
에서 (0 인덱스) 위치의 값은 i
사이 0
에 i
포함됩니다.
유효하지 않은 입력을 처리 할 필요가 없습니다.이 경우 어떤 동작도 허용됩니다 (충돌, 무한 루프 등).
산출
스크램블 목록
움직임을 생성하는 단계별
Scrambled List | Moves to sort
[4,0,2,1,3,5] | [0, , , , , ] #4 stay in place
[4,0,2,1,3,5] | [0,1, , , , ] #0 is moved 1 slot to the left
[0,4,2,1,3,5] | [0,1,1, , , ] #2 is moved 1 slot
[0,2,4,1,3,5] | [0,1,1,2, , ] #1 is moved 2 slot
[0,1,2,4,3,5] | [0,1,1,2,1, ] #3 is moved 1 slot
[0,1,2,3,4,5] | [0,1,1,2,1,0] #5 is in the right place already
[0,1,2,3,4,5]
따라서 입력 [0,1,1,2,1,0]
하려면 프로그램을 출력해야합니다 [4,0,2,1,3,5]
.
움직임은 (최종) 정렬 목록의 위치가 아니라 정렬 된 세그먼트 (굵은 부분)의 위치에 있음을 명심하십시오.
테스트 사례
[0,0,0] -> [0,1,2]
[0,1,0,1] -> [1,0,3,2]
[0,0,0,0,0,5] -> [1,2,3,4,5,0]
[0,1,2,3] -> [3,2,1,0]
[0,1,1,1] -> [3,0,1,2]
[0,1,1,2,1,0] -> [4,0,2,1,3,5]
승리
이것은 code-golf 이므로 가장 짧은 답변이 이깁니다.