Herausforderung
Zeigen Sie anhand einer Liste von ganzen Zahlen, wie die Schwerkraftsortierung durchgeführt wird.
Schwerkraft sortieren
Stellen Sie sich die Zahlen als Reihen von Sternchen vor. Dann fällt alles und die neuen Zeilen werden offensichtlich sortiert. Schauen wir uns ein Beispiel an:
[2, 7, 4, 6]
:
**
*******
****
******
-------
**
****
*******
******
-------
** | 2
**** | 4
****** | 6
******* | 7
Beachten Sie, dass dies so ziemlich nur eine parallelisierte Blasensortierung ist.
Genaue Angaben
Nehmen Sie bei jeder Iteration, beginnend mit der obersten Zeile, jedes Sternchen aus der Zeile, unter der sich kein Sternchen befindet, und verschieben Sie es eine Zeile nach unten. Machen Sie so lange weiter, bis die Liste sortiert ist.
Eingang
Die Eingabe ist eine Liste von streng positiven ganzen Zahlen.
Ausgabe
Für die Ausgabe müssen Sie jeden Schritt ausgeben. Sie können zwei beliebige druckbare Nicht-Whitespace-ASCII-Zeichen auswählen, eines als "Sternchen" und eines als trennende "Bindestriche". Die Sternchenreihen müssen durch eine Art Standard - Zeilenumbruch (z. B. \n
oder) getrennt werden\r\f
. ) getrennt werden. Die Strichreihe muss mindestens der Breite der breitesten Reihe entsprechen (sonst fallen Ihre Sternchen zu weit nach unten!). Eine Reihe von Strichen ganz unten ist optional. Ein abschließender Zeilenumbruch am Ende ist zulässig. Nachgestellte Leerzeichen in jeder Zeile sind zulässig.
Testfälle
Die Eingabe wird als Liste dargestellt, und die Ausgabe wird unmittelbar darunter aufgeführt. Testfälle werden durch einen doppelten Zeilenumbruch getrennt.
[4, 3, 2, 1]
****
***
**
*
----
***
** *
* *
**
----
**
* *
** *
***
----
*
**
***
****
[6, 4, 2, 5, 3, 1]
******
****
**
*****
***
*
------
****
** **
****
***
* **
***
------
**
****
*** **
* *
***
*****
------
**
***
* *
*** **
****
*****
------
**
*
***
****
******
*****
------
*
**
***
****
*****
******
[8, 4, 2, 1]
********
****
**
*
--------
****
** ****
* **
**
--------
**
* **
** ****
****
--------
*
**
****
********
Bitte zögern Sie nicht, meine Testfälle zu korrigieren, wenn sie falsch sind, ich habe sie von Hand gemacht :)
Hinweis: Die sortierte Liste am Ende nicht ausgeben. :)
Wertung
Alle Ihre Programme werden übereinander geschrieben. Sie möchten nicht, dass Teile Ihres Programms herunterfallen, stellen Sie also sicher, dass Sie den kürzesten Code haben!