도전
정수 목록이 주어지면 중력 정렬이 어떻게 수행되는지 보여줍니다.
중력 정렬
중력 정렬에서 숫자를 별표의 행으로 상상하십시오. 그런 다음 모든 것이 떨어지고 새 행이 분명히 정렬됩니다. 예를 보자.
[2, 7, 4, 6]
:
**
*******
****
******
-------
**
****
*******
******
-------
** | 2
**** | 4
****** | 6
******* | 7
이것은 거의 병렬화 된 버블 정렬입니다.
정확한 사양
맨 위 행부터 시작하여 각 반복마다 별표가없는 행에서 모든 별표를 가져 와서 아래로 이동하십시오. 목록이 정렬 될 때까지 계속하십시오.
입력
입력은 엄격하게 양의 정수 목록입니다.
산출
출력의 경우 각 단계를 출력해야합니다. 공백이 아닌 인쇄 가능한 ASCII 문자 중 하나는 "별표"로, 다른 하나는 분리하는 "대시"로 선택할 수 있습니다. 별표 행은 일종의 표준 개행 (예 : \n
또는 \r\f
) 으로 구분해야합니다 . 대시 행은 최소한 가장 넓은 행의 너비 여야합니다 (그렇지 않으면 별표가 너무 아래로 떨어질 것입니다). 맨 아래에 대시 줄은 선택 사항입니다. 끝에 줄 바꿈이 허용됩니다. 각 줄의 후행 공백이 허용됩니다.
테스트 사례
입력은 목록으로 표시되며 출력은 바로 아래에 나열됩니다. 테스트 사례는 이중 줄 바꿈으로 구분됩니다.
[4, 3, 2, 1]
****
***
**
*
----
***
** *
* *
**
----
**
* *
** *
***
----
*
**
***
****
[6, 4, 2, 5, 3, 1]
******
****
**
*****
***
*
------
****
** **
****
***
* **
***
------
**
****
*** **
* *
***
*****
------
**
***
* *
*** **
****
*****
------
**
*
***
****
******
*****
------
*
**
***
****
*****
******
[8, 4, 2, 1]
********
****
**
*
--------
****
** ****
* **
**
--------
**
* **
** ****
****
--------
*
**
****
********
테스트 케이스가 잘못되면 언제든지 수정하십시오. 손으로 직접 작성했습니다. :)
참고 : 정렬 된 목록을 마지막에 출력하지 마십시오. :)
채점
모든 프로그램은 서로 위에 작성됩니다. 프로그램의 일부가 쓰러지는 것을 원하지 않으므로 가장 짧은 코드를 사용해야합니다!