Reto
Dada una lista de enteros, muestre cómo se haría la clasificación por gravedad.
Ordenar por gravedad
En gravedad, imagine los números como filas de asteriscos. Entonces, todo cae, y las nuevas filas obviamente se ordenarán. Veamos un ejemplo:
[2, 7, 4, 6]
:
**
*******
****
******
-------
**
****
*******
******
-------
** | 2
**** | 4
****** | 6
******* | 7
Tenga en cuenta que esto es más o menos una clasificación de burbujas paralela.
Especificaciones exactas
En cada iteración, comenzando desde la fila superior, tome cada asterisco de la fila que no tenga un asterisco debajo y muévalo hacia abajo una fila. Sigue haciendo eso hasta que la lista esté ordenada.
Entrada
La entrada será una lista de enteros estrictamente positivos.
Salida
Para la salida, debe generar cada paso. Puede elegir dos caracteres ASCII imprimibles que no sean espacios en blanco, uno para ser los "asteriscos" y otro para ser los "guiones" de separación. Las filas de asteriscos se deben separar con una nueva línea estándar de algún tipo (p . Ej. \n
O \r\f
). La fila de guiones debe ser al menos del ancho de la fila más ancha (de lo contrario, ¡los asteriscos caerán demasiado!). Una fila de guiones en la parte inferior es opcional. Se permite una nueva línea al final. Se permiten espacios finales en cada línea.
Casos de prueba
la entrada se representará como una lista, luego la salida se enumerará inmediatamente debajo. Los casos de prueba están separados por una doble línea nueva.
[4, 3, 2, 1]
****
***
**
*
----
***
** *
* *
**
----
**
* *
** *
***
----
*
**
***
****
[6, 4, 2, 5, 3, 1]
******
****
**
*****
***
*
------
****
** **
****
***
* **
***
------
**
****
*** **
* *
***
*****
------
**
***
* *
*** **
****
*****
------
**
*
***
****
******
*****
------
*
**
***
****
*****
******
[8, 4, 2, 1]
********
****
**
*
--------
****
** ****
* **
**
--------
**
* **
** ****
****
--------
*
**
****
********
No dude en corregir mis casos de prueba si están equivocados, los hice a mano :)
Nota: No envíe la lista ordenada al final. :)
Tanteo
Todos sus programas se escribirán uno encima del otro. No querrás que se caigan partes de tu programa, ¡así que asegúrate de tener el código más corto!