Herausforderung
Robin mag es, wenn seine Variablendeklaration die Form eines Pfeils hat. So macht er es:
- Geben Sie eine beliebige Anzahl von Zeichenfolgen ein
- Ordnen Sie sie nach aufsteigender Länge
Geben Sie sie in der Mitte sortiert aus, um ungefähr eine negative Pfeilspitze zu bilden (je nachdem, welche Reihenfolge am besten ist):
5 or 4 3 2 1 1 2 3 4 5
Testfälle
Eingang:
bow
arrows
sheriffOfNottingham
kingRichard
maidMarian
princeJohn
sherwoodForest
Ausgabe:
sheriffOfNottingham
kingRichard
maidMarian
bow
arrows
princeJohn
sherwoodForest
Eingang:
a
bb
cc
Ausgabe (beide sind gültig):
bb
a
cc
cc
a
bb
Eingang:
one
four
seven
fifteen
Mögliche Ausgabe (die einzige andere gültige Ausgabe ist der vertikale Spiegel):
seven
one
four
fifteen
Anmerkungen
Die Zeichenfolgen befinden sich in camelCase und enthalten keine Zahlen oder Sonderzeichen, sondern nur Klein- und Großbuchstaben.
Die Eingabe kann beliebig sein: Kommagetrennt als eine Zeichenfolge, ein Array, ... Jedes E / A-Format ist zulässig.
- Zwischen Saiten gleicher Länge wird jede Bestellung angenommen.
Antworten:
Python 2 , 47 Bytes
Probieren Sie es online!
quelle
[::-2]
direkt verwenden, um 5 Bytes zu sparen.R ,
6348 BytesProbieren Sie es online!
Sortieren Sie nach Zeichenfolgenlängen und kombinieren Sie dann die umgekehrte Liste mit der sortierten Liste. Nehmen Sie schließlich jedes zweite Element, beginnend mit 1-basiertem Index 1.
quelle
o<-L[...
Der andere Weg zu 'Pfeilvariablen'. Eine weniger wichtige Seite,pryr::f(...)
arbeitet hier für 46. Probieren Sie es online!R + pryr
weshalb ich es normalerweise vermeide, es zu tun, es sei denn, es gibt einen guten Grund - wie bei Fragen zur Zahlentheorie -numbers
ist unabdingbar.Javascript 77 Bytes
Nimmt Eingaben als ein Array von Zeichenfolgen und gibt ein pfeilsortiertes Array von Zeichenfolgen aus.
Erläuterung
quelle
f=
. 77f=x=>x?f(x-1)
. In diesem Fall müssen Sie dies berücksichtigen,f
da Sie es in Ihrer Funktion aufrufen. Da Sie jedoch keine Rekursion verwenden, sollten Sie diese nicht einbeziehen müssenf
. Es gibt mehrere Posts in Meta, dieser scheint es ein bisschen besser zu erklären. codegolf.meta.stackexchange.com/a/9032/8340C # (Visual C # Interactive Compiler) , 89 Byte
Probieren Sie es online!
quelle
K (oK) , 24 Bytes
Lösung:
Probieren Sie es online!
Erläuterung:
Generieren Sie die
6 4 2 0 1 3 5
Sequenz, verwenden Sie diese, um die aufsteigenden Längen der Eingabe zu indizieren, und verwenden Sie diese, um das ursprüngliche Array zu indizieren:quelle
Gelee ,
98 BytesProbieren Sie es online!
ist auch 8 Bytes.
Vielen Dank an @EriktheOutgolfer und @JonathanAllan, die beide Golf anbieten, um ein Byte zu sparen.
quelle
Ṛ€1¦
kann werdenm"-
.LÞŒœṚ;¥/
Ruby , 51 Bytes
Probieren Sie es online!
quelle
05AB1E ,
65 BytesDank Kevin Cruijssen 1 Byte gespeichert
I / O ist eine Liste von Strings.
Der Link wurde für durch Zeilenumbrüche getrennte E / A geändert, um das Testen zu erleichtern.
Probieren Sie es online!
Erläuterung
quelle
R
und ersetzen«
miti
einem Byte zu speichern, da die dritte Kugel-Punkte - Regel beide Versionen können von uninterleaving.J , 11 Bytes
Probieren Sie es online!
Wir sortieren es zuerst.
Dann verkleinern wir die Listenform von rechts nach links, wechseln aber ab, auf welcher Seite wir das neue Element platzieren. Getan.
quelle
PowerShell , 66 Byte
Probieren Sie es online!
Nimmt Eingaben über Splatting entgegen, die sich in TIO als separate Befehlszeilenargumente manifestieren.
sort
s on thel
ength speichert dies in$a
und erstellt einen Bereich von1
bis zu dencount
von Eingabezeichenfolgen. Wir ziehen dann nur die ungeraden heraus?{$_%2}
und füttern diese in eine Schleife|%{...}
. Bei jeder Iteration setzen wir das "letzte", dann das "drittletzte" und so weiter auf die Pipeline mit$a[-$_]
. Separat akkumulieren wir auch in$x
der "vorletzten", "vorletzten" usw. Aus der Schleife und die Pipeline wird geleert (diese Elemente werden also ausgegeben) und dann ausgegeben$x
. In beiden Fällen werden bei der Standardausgabe automatisch Zeilenumbrüche zwischen Elementen erstellt.quelle
PHP ,
144141 BytesProbieren Sie es online!
-3 Bytes dank @Ismael Miguel !
quelle
[array_unshift,array_push][++$i%2]($e,$d)
?['array_push','array_unshift']
wobei[++$i%2]
der Index des Arrays bei jedem Wechsel zwischen etwa einer0
und einer1
anderen Funktion ausgewertet wird. Mit den "variablen Funktionen" von PHP können Sie einer Funktion eine Variable zuweisen und durch Aufrufen in Klammern (z. B.$f='array_push'; $f($e,$d);
==array_push($e,$d)
) ausführen, sodass($e,$d)
das ausgewertete Element des Arrays aufgerufen wird. Nur ein kürzerer Wegif (++$i%2) array_push($e,$d); else array_unshift($e,$e);
. Schätze, es gab doch etwas syntaktischen PHP-Zucker![array_unshift,array_push][++$i%2]($e,$d)
mit(array_.[unshift,push][++$i%2])($e,$d)
. Was ich getan habe war, das Wiederholte zu entfernenarray_
, es zu verketten und dann das Ergebnis an den Anruf weiterzuleiten.MATLAB, 87 Bytes
Übernimmt Eingaben als Zellenarray von Zeichenfolgen und gibt eine Spalte mit Zeichenfolgen aus (nicht sicher, ob dies zulässig ist)
PS: Vielen Dank an Sanchises für den Hinweis auf einen Fehler mit Eingaben ungerader Länge
quelle
f({'loooooooong','medium','short'})
end
ist optional für afunction
. Verwendenfunction x=f(y);x={...}'
ist kürzer alsfunction f(y);disp({...}')
.disp
ist, ich bin nicht sicher, was Ausgaberegeln sind. Soll es reiner Text sein oder nicht? oderdisp({...})
ist okay oder auch nur,x={...}
wie Sie vorschlagenAPL (Dyalog Unicode) , 18 Byte SBCS
Probieren Sie es online!
Der Fehler wurde dank @ngn behoben.
Erläuterung:
¹
quelle
≢¨×¯1*⍳∘⍴
->(⊢∘-\≢¨)
und es wird noch kürzer, wenn du esAPL + WIN,
3138 BytesSiehe Adams Kommentar
Probieren Sie es online mit freundlicher Genehmigung von Dyalog Classic!
Fordert zur Eingabe eines verschachtelten Zeichenfolgenvektors auf
quelle
≢
"Tally" zu ersetzen∊⍴
?'12' '1234' '1234' '1234' '1234' '12345678' '12345678' '12345678' '12345678'
. Klar, das Ergebnis hätte sein sollen'12345678' '12345678' '1234' '1234' '12' '1234' '1234' '12345678' '12345678'
Netzhaut , 26 Bytes
Probieren Sie es online! Erläuterung:
Sortieren Sie die Zeilen in aufsteigender Reihenfolge der Länge (
$.&
gibt die Länge der Zeile zurück).Löschen Sie vorübergehend alternative Zeilen und geben Sie die verbleibenden Zeilen in umgekehrter Reihenfolge aus.
Behalten Sie die einzigen Zeilen bei, die vorübergehend gelöscht wurden, und geben Sie sie aus.
quelle
Gaia , 10 Bytes
Probieren Sie es online!
quelle
Japt, 8 Bytes
-3 Bytes dank Shaggy!
Versuch es
quelle
A.ë()
aber ich weiß nicht, ob das zu einer kürzeren Lösung führen wird.PowerShell , 49 Byte
Probieren Sie es online!
Die doppelte Destillation .
quelle
T-SQL, 84 Bytes
Die Eingabe ist eine Tabellenvariable
Probieren Sie es online aus
quelle
Perl 6 , 31 Bytes
Probieren Sie es online!
Nach Stringlänge sortieren, dann nach statischer Reihenfolge 0, -1, 0, -3, 0, -5, ...
quelle
Javascript 95 Bytes
quelle
s.sort()
sortiert die Zeichenfolgen lexikografisch, nicht nach Zeichenfolgenlänge.Rot ,
116101 BytesProbieren Sie es online!
quelle
Perl 5 (
-p0777F/\n/ -M5.01
), 59 BytesTIO
quelle
C (GCC) ,
136128 BytesProbieren Sie es online!
-8 bytes dank ceilingcat.
Die Funktion
f
ist die Lösung. Die Anzahl der Zeichenfolgen, die Zeichenfolgen selbst und der Ausgabepuffer werden als Argumente verwendet (plus vier weitere, die intern verwendet werden).quelle
./.bin.tio
in der Ausgabe ?argv
, einschließlich des Dateinamenst
und behältst es auch dann bei, wenn du es nicht brauchst!Japt , 8 Bytes
Eingabe als ein Array von Zeilen, Ausgabe als ein Array von 2 Arrays von Zeilen, eines für jede Hälfte der Liste.
Probieren Sie es aus (zusätzlicher Code für E / A als durch Zeilenumbrüche getrennte Zeichenfolge)
quelle
Haskell ,
10496 BytesProbieren Sie es online!
quelle