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!
Antworten:
Pyth , 27 Bytes
Probieren Sie es online!
quelle
Perl 5 , 118 Bytes
115 Byte Code +
-pla
Flags.Probieren Sie es online!
Es scheint ein bisschen zu lang. Aber auch hier ist der Umgang mit mehrzeiligen Zeichenfolgen mit Regex normalerweise nicht einfach.
Ich benutze
Y
statt*
und_
statt-
.quelle
Oktave, 104 Bytes
* Benötigt Image-Paket.
Probieren Sie es online!
Erläuterung:
quelle
Python,
203199 Bytesquelle
map
Ziehen Sie in Betracht, Python 2 anstelle Ihres aktuellen Python 3 zu verwenden, in dem ein Array sofort zurückgegeben wird, damit Sie es nicht teilen müssen. Sie möchten eine Variable zuweisen'\n'.join
, um den Mangelsep='\n'
auszugleichen, aber auf diese Weise ist sie wahrscheinlich immer noch kürzer.Japt ,
6962 Bytes-7 Bytes dank @Shaggy
Ich lerne Japt und wollte eine kompliziertere Herausforderung ausprobieren. Ausgabe mit
x
s und"
s anstelle von Sternchen und Bindestrichen; Nimmt Eingaben als ein Array von Zahlen. Es wird davon ausgegangen, dass die Sortierung innerhalb voninput.length
Schritten abgeschlossen ist. korrigiere mich wenn das mal nicht der fall ist.Probieren Sie es online!
Erläuterung
quelle
R ,
210205 BytesProbieren Sie es online!
liest in der Liste von stdin; getrennt durch
+
Zeichen statt-
. Es ist viel länger als ich gedacht hätte. Nutzt die Tatsache , dass der Vergleich'*'>'+'
ausgewertet ,FALSE
sondern'*'>' '
istTRUE
zumindest auf TIO (auf meinem Rechner habe ich'='
die ein wenig besser aussah).Hat es geschafft, 5 Bytes weniger als alle Techniken zu spielen, die ich seit dem Schreiben der ursprünglichen Antwort gelernt habe.
Probieren Sie es online!
quelle
Haskell ,
213211208 BytesProbieren Sie es online!
quelle
Javascript, 274 Bytes
Beispielcode-Snippet:
quelle