Regeln
Das Programm sollte eine Zeichenfolge / ein Array von Wörtern als Eingabe erhalten. Für jedes Wort in der Zeichenfolge / dem Array wird das Wort rekonstruiert, indem Zeichen abwechselnd von der Vorder- und Rückseite des Wortes verwendet werden.
12345 678 9 -> 15243 687 9.
Anschließend werden die Wörter abwechselnd zwischen dem frühesten und dem zuletzt in der Zeichenfolge vorkommenden Wort neu angeordnet.
15243 687 9 -> 15243 9 687
Schließlich wird der String rekonstruiert, indem die Leerzeichen, Tabulatoren und Zeilenumbrüche an den Indexen platziert werden, an denen sie sich ursprünglich befanden, bevor das Ergebnis ausgegeben wurde.
12345 678 9 -> 15243 687 9 -> 15243 9 687 -> 15243 968 7
Die Ausgabe sollte denselben Datentyp wie die Eingabe haben.
Standardlücken sind verboten
Beispiele
Eingabe:
Der schnelle Braunfuchs springt über den faulen Hund.
Ausgabe: Die
d.ogq kucil yaz bnrwo tehf xoo rvej supmEingabe:
Der schnelle Braunfuchs springt
über den faulen Hund.
Ausgabe: Die
d.ogq kucil yaz bnrwo
tehf xoo rvej supmEingang:
Aflack
Ausgang:
Akfcla
Das ist Code-Golf, also gewinnt der kürzeste Code
quelle
Antworten:
Jelly ,
15 148 BytesEine satte 6 Byte speichern von Dennis (durch die Flatten und Schimmel im Inneren Link bewegen 1 gibt es keine Notwendigkeit, spaltete sich in zwei und Kopf, und ein Flatten gibt es bereits , so dass sie eins werden!)
(aus den beiden Zeilen:,
żṚFœs2Ḣ
undÇ€ÇFṁ⁸
)Probieren Sie es online!
Nimmt eine Reihe von Wörtern und gibt eine Reihe neuer Wörter zurück. (Die Fußzeile bei TIO ruft dies auf und fügt dem Array Leerzeichen hinzu, damit es gut ausgedruckt wird.)
Hinweis: Die Bearbeitung einer einzelnen Zeichenfolge, das Aufteilen auf Tabulatoren und Zeilenumbrüche sowie das erneute Zusammensetzen erwiesen sich als recht schwierig. Als ich sah, dass eine Liste von Wörtern eine Option war, wurde es viel einfacher!
Wie?
quelle
JavaScript (ES6), 89 Byte
Nimmt eine Reihe von Wörtern auf und gibt sie aus.
Prüfung
Code-Snippet anzeigen
String-Version, 112 Bytes
Nimmt einen String und gibt ihn aus.
Prüfung
Code-Snippet anzeigen
quelle
Perl , 77 Bytes
74 Byte Code + 3 Byte für
-0pa
Flags.Probieren Sie es online!
Gespeichert 8 Bytes dank einer alten @Ton Hospel ‚s Post , wo ich‚gestohlen‘
s/../chop/reg
. (Ich hatte vorher$c=y///c/2,s/.{$c}$//
)quelle
Perl 6 , 84 Bytes
Eingabe und Ausgabe einer Liste von Wörtern.
Wie es funktioniert
Innerhalb des Lambdas definierte ich ein weiteres Lambda, um die Drehung " Zeichen abwechselnd von vorne und hinten aufnehmen " durchzuführen :
Dies funktioniert, weil der
xx
Operator eher wie ein Makro als eine Funktion ist, da er eine magische, faule Auswertung ermöglicht.Dann im Hauptlambda:
Perl 6 , 87 Bytes
Dies ist eine Abwandlung der oben genannten Methode, bei der eine Zeichenfolge eingegeben und ausgegeben wird, wobei verschiedene Leerzeichen beibehalten werden.
quelle
Haskell ,
115 95 93 9895 BytesMit anrufen
(!)=<<(f=<<).f.words $ "some string"
. Probieren Sie es online!Vielen Dank an @nimi für den Hinweis, dass ich die Herausforderung früher falsch verstanden habe.
Die Funktion
f
führt das Verdrehen einer Liste durch, sodass sie für Zeichenfolgen (Liste der Zeichen) und eine Liste der Zeichenfolgen verwendet werden kann.a!b
Fügt das Leerzeichen von stringb
in string eina
.(!)=<<(f=<<).f.words
ist gleichbedeutend mit\s0 -> (concatMap f . f . words $ s0) ! s0
:quelle