Sortieren Sie die Lehrbücher
Die Schule beginnt bald (falls noch nicht geschehen) und es ist Zeit, unsere Lehrbücher in Ordnung zu bringen. Sie müssen Ihre Bücher in alphabetischer Reihenfolge sortieren, aber das dauert zu lange, sodass Sie sich dafür entscheiden, ein Programm zu schreiben.
Beispiele
Eingang:
_
| | _
|F| | |
|o|_|P|
|o|B|P|
| |a|C|
| |r|G|
|_|_|_|
Ausgabe:
_
| |_
|F| |
_|o|P|
|B|o|P|
|a| |C|
|r| |G|
|_|_|_|
Eingang
Die Eingabe besteht aus einer Reihe von Büchern, die alphabetisch neu angeordnet werden müssen. Es enthält nur: |
,_
, , und
A-Za-z
. Die Titel der Bücher werden vertikal von oben nach unten gelesen.
Sie können annehmen, dass die Eingabe mit Leerzeichen aufgefüllt ist, um sie an ein Rechteck anzupassen. Wenn Sie Ihre Eingabe mit Leerzeichen auffüllen möchten, geben Sie dies in Ihrer Antwort an.
Die maximale Buchhöhe, die Ihr Programm verarbeiten muss, beträgt 5.120 Zeilen.
Die Bücher werden immer 1-dick sein und es wird immer mindestens ein Buch in der Eingabe sein
Ausgabe
Die Ausgabe muss dieselbe Gruppe von Büchern sein, die in alphabetischer Reihenfolge angeordnet sind. Die Höhe der Bücher muss gleich bleiben und der Titel muss bei der Neuanordnung den gleichen Abstand von oben haben.
Bücher sollten alphabetisch sortiert sein. Wenn Ihre Sprache eine Sortierfunktion hat, können Sie diese verwenden. Ansonsten können Sie die hier beschriebene alphabetische Sortierung verwenden .
Buchtitel-Beispiele
_
| |
| |
|F|
|o|
|o|
| |
| |
|B|
|a|
|r|
| |
| |
|_|
Dieser Buchtitel lautet:
"Foo Bar"
Buchtitel enthalten nur Buchstaben und Leerzeichen.
Leerzeichen dürfen nachgestellt werden
Gewinnen
Das ist Code-Golf, also gewinnt der kürzeste Code in Bytes.
Antworten:
CJam, 60 Bytes
Ich habe versucht, meine Python-Antwort zu portieren , was auch dem Ansatz von @ RetoKoradi ähnelt .
Probieren Sie es online aus . Die Eingabe sollte mit Leerzeichen aufgefüllt werden, um ein Rechteck zu bilden.
quelle
Python 3, 231 Bytes
Nur ein kurzer Hack. Zippen Sie die Bücher, sortieren, rezip, kümmern Sie sich um die Spalten,
|
während wir gerade dabei sind.Geben Sie eine mehrzeilige Zeichenfolge ein, die mit Leerzeichen am Ende eines Rechtecks aufgefüllt ist. Die Ausgabe enthält in jeder Zeile ein Leerzeichen mehr als erforderlich.
Ungolfed
quelle
Rubin (
209204200198 Bytes)Die
transpose
Funktion in dieser Lösung erfordert, dass alle Zeilen die gleiche Länge haben, daher muss die Eingabe mit Leerzeichen aufgefüllt werden.Erläuterung
quelle
ruby
Version wird benötigt? Mit 2.1.2 für die Beispieleingabe aus der Frage erhalte ich "transponieren": Elementgröße unterscheidet sich (6 sollte 2 sein) (IndexError) ".gsub(?|,' ')
→tr(?|,' ')
.Python 2 - 399 Bytes
Erwartet, dass die Eingabe keine nachgestellte Zeile enthält.
quelle
CJam,
756665 BytesDies setzt voraus, dass die Eingabe mit Leerzeichen aufgefüllt wird, um ein Rechteck zu bilden.
Probieren Sie es online aus
Vielen Dank an @ Sp3000 und @Dennis für Vorschläge zum Trimmen von Saiten im Chat sowie für den Hinweis, dass der
$
Operator einen Block als Argument nehmen kann.Ich bin immer noch nicht ganz zufrieden mit der zweiten Runde. Aber nachdem ich ein paar andere Optionen ohne besseren Erfolg ausprobiert habe, werde ich müde.
Erläuterung:
quelle
Scala
359341 Byteserwartet, dass alle Zeilen die gleiche Länge haben (dh mit Leerzeichen aufgefüllt sind)
ungolfed & kommentiert:
quelle