Wenn Sie eine Zeichenfolge angegeben haben, kehren Sie sie interleaving um. So geht's für abcdefghi
und abcdefghij
, 0-indiziert:
- Trennen Sie die Zeichen bei geraden Indizes von den Zeichen bei ungeraden Indizes:
acegi bdfh
acegi bdfhj - Kehren Sie die Zeichen bei ungeraden Indizes um:
acegi hfdb
acegi jhfdb - Verschachteln Sie erneut in eine Zeichenfolge:
ahcfedgbi
ajchefgdib
Regeln
- Sie müssen sowohl Zeichenfolgen mit gerader als auch mit ungerader Länge unterstützen.
- 0-indexmäßig müssen Sie die Zeichen bei ungeraden Indizes umkehren, nicht bei geraden.
- 1-indexmäßig müssen Sie natürlich die Zeichen bei geraden Indizes umkehren, nicht bei ungeraden.
- Die Eingabe besteht aus druckbarem ASCII (Code-Punkte 32-126), keine Zeilenumbrüche.
- Sie können Eingaben entweder als Zeichenfolge oder als Liste von Zeichen (NICHT 1-Zeichen-Zeichenfolgen) annehmen. ZB
String
/char[]
oderchar*
sind erlaubt, aberString[]
/char[][]
oderchar**
nicht.
Testfälle
Input
Output
Hello, World!
HdlroW ,olle!
Hello World!
H!llooW rlde
ABCDEFGHIJKLMNOPQRSTUVWXYZ
AZCXEVGTIRKPMNOLQJSHUFWDYB
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
}"{$y&w(u*s,q.o0m2k4i6g8e:c<a>_@]B[DYFWHUJSLQNOPMRKTIVGXEZC\A^?`=b;d9f7h5j3l1n/p-r+t)v'x%z#|!~
P
P
AB
AB
xyz
xyz
Geben Sie für die leere Zeichenfolge die leere Zeichenfolge selbst zurück.
Antworten:
Gelee , 7 Bytes
Dies ist ein volles Programm.
Probieren Sie es online!
Wie es funktioniert
quelle
MATL , 8 Bytes
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
quelle
2L
ist "Push [2,2,1j]" und5M
ist "Push [2,2,1j] wieder" ... und einige Leute sagen, dass Golfsprachen nicht lesbar sind!2L
erzeugt ein vordefiniertes Literal.5M
ist eine automatische Zwischenablage, in der Eingaben für die letzten Funktionsaufrufe gespeichert werden. Es könnte tatsächlich durch2L
für die gleiche Byteanzahl ersetzt werdenAlice , 10 Bytes
Probieren Sie es online!
Die Hälfte der Bytes dieses Programms wird für die korrekte Formatierung der Quelle aufgewendet, die eigentlichen Befehle nur
IYRZO
, weil Alice genau die richtigen Buildins für diese Aufgabe hat.Erläuterung
Wie gesagt, die mirrors (
/\
), die newline und@
sind da nur um die ip in die richtige richtung zu bewegen und das programm am ende zu beenden. Der eigentliche Code, linearisiert, ist der folgende:Ganz einfach, würde ich sagen.
quelle
Java (OpenJDK 8) ,
108969493 Bytes1 Byte gespart durch Verwendung von @ Neils ordentlichem Trick der Verwendung
s[s.length+~i|1]
Probieren Sie es online!
quelle
String f(char[]s)
mits->
.. Und Sie können ein Byte als auch sparen , indem die Umsetzung derint
Initialisierung in dem for-Schleife:for(int a=s.length,b=0;b<a;b++)
. Probieren Sie es online aus.Python 2 , 52 Bytes
Probieren Sie es online! oder Probieren Sie alle Testfälle aus
quelle
Oktave, 32 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6), 48 Byte
quelle
Gelee , 9 Bytes
Probieren Sie es online!
-1 Byte dank Dennis
quelle
¢
mitÇ
, müssen Sie nicht die³
in dem Helfer - Link.Netzhaut ,
1713 BytesProbieren Sie es online!
Ein Fehler wurde behoben, der Neil zu verdanken war.
4 Bytes gespart dank Kobi.
Wählt jeden Buchstaben mit einer ungeraden Anzahl von Zeichen aus und kehrt sie um. Hierzu wird verwendet,
\G
welche Übereinstimmungen mit dem Ende der letzten Übereinstimmung übereinstimmen.quelle
$
anstelle von verwenden#
.\G
stattdessen auf dem Lookbehind verwenden, und Sie können das entfernen$
:O^`(?<=\G.).
(12 Bytes)$
da alle Eingaben in sortierter lexikografischer Reihenfolge waren. Ich habe einen neuen Testfall hinzugefügt, bei dem Ihr Code fehlschlagen würde.PHP> = 7.1, 58 Bytes
Online Version
quelle
APL (Dyalog) , 9 Bytes
Erforderlich
⎕IO←0
(Standardeinstellung bei vielen Systemen) für die korrekte Definition von ungeraden und geraden Werten.Probieren Sie es online!
⌽
umkehren@
Bei den durch die Maske gefilterten Elementen ergibt sich aus der Anwendung der{
anonyme Funktion2|
der mod-2 von⍳
die Indizes von≢
die Anzahl (Länge) von⍵
das Argument}
auf das Argumentquelle
Röda , 34 Bytes
Probieren Sie es online!
Erläuterung
Hier ist eine alternative Lösung zum gleichen bytecount
3634 BytesDies ist eine anonyme Funktion, die Eingaben als Zeichenfolge aus dem Eingabestream übernimmt.
quelle
Python 2 , 67 Bytes
Probieren Sie es online!
quelle
OCaml , 70 Bytes
Probieren Sie es online!
quelle
Haskell , 63 Bytes
Probieren Sie es online! Verbrauch:
f "some string"
.Bei ungeraden Zeichenfolgen übergibt
abcdefghi
die Funktionf
die Zeichenfolge und ihre Umkehrung an die Funktion!
, die abwechselnd Zeichen aus beiden Zeichenfolgen entnimmt. Bei geraden Strings funktioniert dies nicht und wir müssen zuerst ein Dummy-Zeichen anhängen, um den Offset richtig zu machen.quelle
C 69 Bytes
Ziemlich einfach. Durchläuft die Zeichenfolge und gibt entweder das aktuelle Zeichen oder das entgegengesetzte aus.
Ungolfed und erklärte:
quelle
Mathematica, 82 Bytes
quelle
Japt ,
1413 Bytes12 Byte Code, +1 für das
-P
Flag.1 Byte dank @Shaggy gespeichert
Erläuterung:
Probieren Sie es online!
quelle
ë2,1
ist ziemlich hässlich. Ich denke, Sie können esó o
stattdessen tun , vielleicht ...Åë
funktioniert auch.Japt , 8 Bytes
Probier es aus
quelle
K (oK) , 18 Bytes
Lösung:
Probieren Sie es online!
Beispiele:
Erläuterung:
Meistens von rechts nach links interpretiert, finden Sie die ungeraden Indexzeichen, kehren Sie sie um und setzen Sie sie wieder in die Zeichenfolge
quelle
J, 26 Bytes
ungolfed
Erläuterung
(0 1$~#)]`(|.@])/.]
Verwenden Sie die Taste/.
, um die Eingabe in gerade / ungerade Gruppen aufzuteilen:(0 1$~#)
Erstellt die Gruppendefinition, indem Sie 0 und 1 zyklisch zur Länge der Eingabe wiederholen. Wir verwenden die gerundial Form von Key für seine Hauptverb]`(|.@])
, die die Identität der ersten Gruppe gilt und kehrt die zweite Gruppe:(|.@])
.,@,./
Probieren Sie es online!
quelle
(\:2|#\)({~/:)#\<.#\.
und 19 Bytes mit[:,@,./]]
| ./. ~ 2 | # `[:,@,./]]`|./.~2|#\
, die Zecken wurden ausgewertet0,@|:]]`|./.~2|#\
Python 3,
9387 Bytesquelle
reversed(s[1::2])
durchs[1::2][::-1]
, um 4 Bytes zu sparenf=lambda s,j="".join:j(j(t)for t in zip(s[::2],s[1::2][::-1]))+("",s[-1])[len(s)%2]
Perl 6 ,
63 5855 BytesProbier es aus
Probier es aus
Probier es aus
Ich musste
roundrobin
eher als verwendenzip
, dazip
stoppt sobald eine der Eingabelisten erschöpft ist.quelle
Mathematica, 62 Bytes
Nimmt als Eingabe einen String
Probieren Sie es online!
quelle
APL (Dyalog) , 24 Bytes
Bytes golfen dank @ Adám
Probieren Sie es online!
quelle
GNU APL 1.2, 24 Bytes
APL arbeitet von rechts nach links.
⍴R←⍞
Weist Benutzereingaben zuR
und wertet dann deren Länge aus. Halbieren Sie dies durch Multiplikation mit.5
und wenden Sie die⌊
Bodenfunktion an.⍳
Gibt alle Zahlen von 1 an das Argument zurück.APL arbeitet mit Arrays.
2×
Das Array, das wir gerade erhalten haben,⍳
verdoppelt jedes Element und gibt uns nur die geraden Indizes (1-indiziert, also abhängig von⎕IO
dass es 1 ist).Beim Zugriff auf mehrere Indizes eines Vektors gibt APL die Elemente an diesen Indizes in einem Vektor an.
R[X←2×⍳⌊.5×⍴R←⍞]
gibt nur die geradzahligen Elemente an.⌽
kehrt die Elemente um. Weisen Sie dann die umgekehrten Werte den geraden Indizes zu (indem Sie diese Indizes so zuweisen, dass sieX
6 Byte speichern).◊
ist das Anweisungstrennzeichen. Nachdem die Umkehrung abgeschlossen ist, bewerten SieR
, um das Ergebnis auszudrucken.quelle
Perl 5, 46 + 3 für -F flag = 49 Bytes
Verwendet das
-F
Flag, um die Eingabe automatisch in ein Array von Zeichen aufzuteilen@F
. Durchläuft das Array und gibt das Element für einen geraden Index oder den Index (plus eins für einen String mit ungerader Länge) vom Ende für eine ungerade Eingabe aus.Nimmt Eingaben mit einem nachgestellten Zeilenumbruch entgegen. Ohne die nachfolgende Zeile kann nur das Vorinkrement auf
$x
ein Nachinkrement geändert werden .Ein bisschen besser lesbar:
quelle
05AB1E , 21 Bytes
Probieren Sie es online!
Ich vermute, der Grund, warum dies in 05AB1E noch nicht gemacht wurde, ist, dass es eklig ist ...
Ein weiteres Mal
zip
schmerzt das Auto-Drop-Last-Element der Funktion, anstatt zu helfen.PS Wenn Sie Verbesserungsvorschläge zu meiner Antwort haben, posten Sie Ihre eigenen; Es ist wahrscheinlich genug für eine Verbesserung, um zu garantieren, dass Sie die Punkte bekommen. Ich schäme mich ziemlich für diese Antwort.
quelle
q / kdb +,
70564738352927 BytesLösung:
Beispiel:
Erläuterung:
Suchen Sie die ungeraden Indizes der Zeichenfolge, kehren Sie diese Liste um, ziehen Sie Elemente an diesen Punkten heraus und weisen Sie sie der ursprünglichen Zeichenfolge erneut zu.
Bearbeitungen:
-9 Bytes; ausschalten
count
für(#:)
,til
für(!)
,where
für(&:)
undreverse
für(|:)
.-3 Bytes; Schalt out
(#:)
für(#)
,(&:)
für(&)
und(|:)
für(|)
-6 Bytes; komplett neu schreiben
-2 Bytes; mit Zuordnung statt gelten
quelle
05AB1E , 12 Bytes
Probieren Sie es online!
quelle