Aufgabe
- Nehmen Sie die durch Leerzeichen getrennte Eingabezeichenfolge.
- Sortieren Sie die Wörter alphabetisch.
- Drucken Sie sie vertikal in 3 Spalten aus, die durch Leerzeichen voneinander getrennt sind.
Herausforderung
- Alle drei Spaltenhöhen sollten so gleichmäßig wie möglich gewichtet sein.
- Alle drei Spalten sollten linksbündig sein.
Das ist Code-Golf , also gewinnt der kürzeste Code!
Beispiel
Wenn die Eingabe lautet:
"cat caterpillar pie frog elephant pizza",
Die Ausgabe sollte sein:
cat elephant pie
caterpillar frog pizza
Bitte beachten Sie die Fälle, wenn die Eingabe wie folgt lautet:
"a b c d e f g"
Sollte gedruckt werden als:
a c e
b d f
g
# or
a d f
b e g
c
# and not
a d g
b e
c f
Antworten:
Schale ,
2417 BytesProbieren Sie es online!
Erläuterung
Dies war eine überraschend knifflige Herausforderung, da Husk derzeit nicht über eine integrierte Funktion zum Aufteilen einer Liste in eine bestimmte Anzahl von Teilen verfügt.
quelle
Gelee , 6 Bytes
Probieren Sie es online!
quelle
a b c d e f g
Fall getestet , und ich habe andere umfangreiche Tests durchgeführt, weil ich dieses Gefühl auch zuerst hatte. Oh, und seine Kürze kommt vom eingebautenG
(Format as G rid.).Python 3 , 148 Bytes
-6 bytes dank ovs.
Probieren Sie es online!
Ich arbeite daran.Alles, was ich versucht habe, macht die Ausgabe schief ...quelle
Mathematica, 115 Bytes
Probieren Sie es auf Wolfram Sandbox
Füge den folgenden Code ein und drücke Shift + Enter
quelle
Perl 5 , 134 + 1 (
-a
) = 135 BytesProbieren Sie es online!
quelle
05AB1E , 8 Bytes
Probieren Sie es online!
quelle
Javascript
181175 Bytesquelle
J , 73 Bytes
Ich kann dieses Durcheinander später erklären, wenn jemand interessiert ist.
Probieren Sie es online!
quelle
Kohle ,
6564 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Sparen Sie 2 Bytes, wenn ich nicht mit weniger als 3 Wörtern umgehen muss. Es gibt wahrscheinlich eine Sortierung "eval", die ich verwenden sollte ... Erläuterung:
Teilen Sie die Eingabe auf Leerzeichen.
Sortieren Sie das Array.
Schleife über drei ungefähr gleiche Scheiben des Arrays. (
I1
Sollte es wirklich sein¦¹
.)Verbinden Sie das Slice mit Zeilenumbrüchen und drucken Sie es aus, ohne den Cursor zu bewegen.
Wenn das Slice nicht leer ist, gehen Sie um eins weiter als das längste Wort im Slice.
quelle
358 Bytes minimiertes JS:
quelle
GNU sed , 92 + 1 = 93 Bytes
+1 Byte für
-r
Flag.Ich habe das überhaupt nicht golfen, aber es stellte sich als viel einfacher heraus, als ich erwartet hatte.
Probieren Sie es online!
quelle
Borowski-Shell, 172 Bytes
Es ist besser lesbar, wenn es konventionell formatiert ist:
Zum Preis des einmaligen Scannens der Eingabe pro Spalte werden keine Arrays verwendet. Ein komplexeres awk-Programm könnte 3 Dateien (eine für jedes N-te Wort) öffnen und die Eingabe in einem Durchgang verarbeiten. Dann könnten sie verkettet und mit derselben letzten Zeile gedruckt werden.
Die Variable
N
wird auch nicht unbedingt benötigt. Für den Preis von 4 Byte sparen wir uns das dreimalige Scannen der Eingabe.quelle