Défi
Étant donné une liste d'entiers, montrez comment le tri par gravité serait effectué.
Tri par gravité
En ordre de gravité, imaginez les nombres sous forme de rangées d'astérisques. Ensuite, tout tombe, et les nouvelles lignes seront évidemment triées. Regardons un exemple:
[2, 7, 4, 6]
:
**
*******
****
******
-------
**
****
*******
******
-------
** | 2
**** | 4
****** | 6
******* | 7
Notez que c'est à peu près un tri de bulles parallélisé.
Spécifications exactes
À chaque itération, en commençant par la ligne du haut, prenez chaque astérisque de la ligne qui n'a pas d'astérisque en dessous et déplacez-le d'une ligne vers le bas. Continuez ainsi jusqu'à ce que la liste soit triée.
Contribution
L'entrée sera une liste d'entiers strictement positifs.
Sortie
Pour la sortie, vous devez sortir chaque étape. Vous pouvez choisir deux caractères ASCII imprimables non blancs, l'un pour les "astérisques" et l'autre pour les "tirets" de séparation. Les rangées d'astérisques doivent être séparées par une nouvelle ligne standard (par exemple \n
ou \r\f
). La ligne de tirets doit être au moins de la largeur de la ligne la plus large (sinon vos astérisques vont tomber trop bas!). Une rangée de tirets tout en bas est facultative. Un retour à la ligne à la fin est autorisé. Les espaces de fin sur chaque ligne sont autorisés.
Cas de test
l'entrée sera représentée sous forme de liste, puis la sortie sera répertoriée immédiatement ci-dessous. Les cas de test sont séparés par un double saut de ligne.
[4, 3, 2, 1]
****
***
**
*
----
***
** *
* *
**
----
**
* *
** *
***
----
*
**
***
****
[6, 4, 2, 5, 3, 1]
******
****
**
*****
***
*
------
****
** **
****
***
* **
***
------
**
****
*** **
* *
***
*****
------
**
***
* *
*** **
****
*****
------
**
*
***
****
******
*****
------
*
**
***
****
*****
******
[8, 4, 2, 1]
********
****
**
*
--------
****
** ****
* **
**
--------
**
* **
** ****
****
--------
*
**
****
********
N'hésitez pas à corriger mes cas de test s'ils sont faux, je les ai faits à la main :)
Remarque: ne sortez pas la liste triée à la fin. :)
Notation
Tous vos programmes seront écrits les uns sur les autres. Vous ne voudriez pas que des morceaux de votre programme tombent, alors assurez-vous d'avoir le code le plus court!