Herausforderungsbeschreibung
Wechseln Sie alle Buchstaben aus dem ersten Teil des Alphabets in die eine und die Buchstaben aus der zweiten Hälfte des Alphabets in die andere Richtung. Andere Charaktere bleiben an Ort und Stelle.
Beispiele
1: Hallo Welt
Hello_world //Input
Hell ld //Letters from first half of alphabet
o wor //Letters from second half of alphabet
_ //Other characters
dHel ll //Cycle first letters
w oro //Cycle second letters
_ //Other characters stay
dHelw_oroll //Solution
2: Codegolf
codegolf
c deg lf
o o
f cde gl
o o
focdeogl
3 .: leere Zeichenfolge
(empty string) //Input
(empty string) //Output
Eingang
String, den Sie drehen müssen. Kann leer sein. Enthält keine Zeilenumbrüche.
Ausgabe
Gedrehte Eingabezeichenfolge, Zeilenumbruch zulässig. Kann
auf den Bildschirm geschrieben oder von einer Funktion zurückgegeben werden.
Regeln
- Keine Lücken erlaubt
- Das ist Code-Golf, also gewinnt der kürzeste Code in Bytes, der das Problem löst
- Das Programm muss die richtige Lösung zurückgeben
Antworten:
MATL , 29 Bytes
Probieren Sie es online!
Erläuterung
quelle
Netzhaut , 55 Bytes
Probieren Sie es online!
Verwendet zwei Sortierstufen, um die Buchstaben der ersten und zweiten Hälfte getrennt zu drehen.
quelle
05AB1E ,
444342 BytesErläuterung
Erstellen Sie eine Liste der Buchstaben des Alphabets in beiden Fällen.
['Aa','Bb', ..., 'Zz']
In 2 Teile teilen und eine Kopie im Register ablegen.
Extrahiert die Briefe von dem Eingang, der ein Teil der 1. Hälfte des Alphabets sind, drehen, und Speicher in X .
Extrahiert die Briefe von dem Eingang, der ein Teil der zweiten Hälfte des Alphabets sind, drehen und zu speichern in Y .
Hauptschleife
Probieren Sie es online!
Hinweis: Bei einer 41- Byte-Lösung
Ð
kann das führende Zeichen in 2sable weggelassen werden.quelle
<s>44</s>
sieht immer noch aus wie 44.Javascript (ES6),
155142138 BytesBearbeiten:
3 bis4 Bytes mit gespeichertunshift()
(inspiriert von der Antwort von edc65)Wie es funktioniert
Die
R
Funktion verwendet eine Array-Methode als Parameterm
:Es wird zuerst mit der
push
Methode verwendet, um extrahierte Zeichen ina[]
(erste Hälfte des Alphabets) undb[]
(zweite Hälfte des Alphabets) zu speichern . Sobald diese Arrays gedreht wurden,R()
wird ein zweites Mal mit dershift
Methode aufgerufen , die neuen Zeichen in die endgültige Zeichenfolge einzufügen.Daher die etwas ungewöhnliche Syntax:
R`push`
undR`shift`
.Demo
quelle
a.unshift(a.pop(b.push(b.shift())))
CJam , 41 Bytes
Probieren Sie es online!
Benutzt einen ähnlichen Ansatz wie mein Vokal, der die Antwort mischt .
quelle
Python, 211 Bytes
Bestes, was ich tun konnte. Nimmt den String von STDIN und gibt das Ergebnis an STDOUT aus.
alternativ mit 204 Bytes, gibt aber leider nach jedem Zeichen eine neue Zeile aus:
quelle
Python 2, 149 Bytes
quelle
JavaScript (ES6), 144
Verwenden der
parseInt
Basis 36, um die erste Hälfte, die zweite Hälfte und andere zu trennen. Für jeden Charakterc
bewerte ichy=parseInt(c,36)
damitc '0'..'9' -> y 0..9
c 'a'..'m' or 'A'..'M' -> y 10..22
c 'n'..'z' or 'N'..'Z' -> y 23..35
c any other -> y NaN
So
y=parseInt(c,36), x=(y>22)+(y>9)
gibt esx==1
für die erste Hälfte,x==2
für die zweite Hälfte undx==0
für jede andere (daNaN
> jede Zahl falsch ist)Erster Schritt: Die Eingabezeichenfolge wird auf ein Array von 0,1 oder 2 abgebildet. In der Zwischenzeit werden alle Zeichenfolgenzeichen zu 3 Arrays hinzugefügt. Am Ende dieses ersten Schritts werden die Felder 1 und 2 in entgegengesetzte Richtungen gedreht.
Zweiter Schritt: Das zugeordnete Array wird gescannt. Dabei wird eine Ausgabezeichenfolge erstellt, die jedes Zeichen aus den drei temporären Arrays übernimmt.
Weniger golfen
Prüfung
quelle
Perl. 53 Bytes
Beinhaltet +1 für
-p
Führen Sie mit der Eingabe auf STDIN aus:
drotate.pl
:quelle
Python,
142133 BytesEine bessere Variation des Themas:
ungolfed:
vorherige Lösung:
ungolfed:
quelle
Ruby, 89 Bytes
quelle
PHP, 189 Bytes
Ziemlich schwer zu golfen ... Hier ist mein Vorschlag:
quelle