Wenn Sie eine Liste oder eine durch Trennzeichen getrennte Zeichenfolge angegeben haben, geben Sie eine Liste oder eine durch Trennzeichen getrennte Zeichenfolge mit dem ersten Zeichen jedes Wortes ein Wort später aus.
Für diese Herausforderung besteht ein "Wort" nur aus druckbaren ASCII-Zeichen mit Ausnahme des Leerzeichens, des Zeilenumbruchs und des Tabulators.
Nehmen Sie zum Beispiel die Zeichenfolge "Guten Tag, Welt!" (durch Leerzeichen getrennt):
1. String
"Good afternoon, World!"
2. Get the first characters:
"[G]ood [a]fternoon, [W]orld!"
3. Move the characters over. The character at the end gets moved to the beginning.
"[W]ood [G]fternoon, [a]orld!"
4. Final string
"Wood Gfternoon, aorld!"
Das ist Code-Golf , also gewinnt der kürzeste Code!
Testfälle:
Input -> output (space-delimited)
"Good afternoon, World!" -> "Wood Gfternoon, aorld!"
"This is a long sentence." -> "shis Ts i aong lentence."
"Programming Puzzles and Code Golf" -> Grogramming Puzzles Pnd aode Colf"
"Input -> output" -> "onput I> -utput"
"The quick brown fox jumped over the lazy dog." -> "dhe Tuick qrown box fumped jver ohe tazy log."
"good green grass grows." -> "good green grass grows."
Antworten:
05AB1E ,
76 BytesErläuterung:
Probieren Sie es online!
quelle
Japt ,
111098 BytesNutzt den Indexumbruch und die negative Indizierung von Japt.
Probieren Sie es online aus
Erläuterung
quelle
¸
h
war eine gute Idee. Ich bin auf£g´Y ¯1 +XÅ
die Idee gekommen, mit deiner Technik £ XhUg´Y ¯1 zu werden.Haskell , 43 Bytes
Probieren Sie es online! Verwendet eine Liste von Zeichenfolgen für die Eingabe und Ausgabe.
Erinnert sich an den ersten Buchstaben des vorherigen Wortes
p
und macht ihn rekursiv zum ersten Buchstaben des aktuellen Wortes, während der neue erste Buchstabe die Kette entlang gesendet wird. Der vorherige erste Buchstabe wird als der erste Buchstabe des letzten Wortes initialisiert.quelle
Ruby,
857763 BytesIch bin mir ziemlich sicher, dass dies viel kürzer sein könnte.
Edit: Danke für @manatwork zum Sammeln -> Karte
quelle
.collect
und.each
durch ersetzen.map
.-p
flag (+1 Byte) undi=-2;gsub(r=/\b\w/){$_.scan(r)[i+=1]}
für ultimatives GolfspielGelee , 6 Bytes
Probieren Sie es online!
Dank an Dennis , der die Regeln besser gelesen hat als ich, wird eine Liste der Wörter zurückgegeben. Es funktioniert nicht als vollständiges Programm.
quelle
CJam ,
12109 Bytes1 Byte dank jimmy23013 gespeichert
Nimmt die Eingabe als eine Liste von Wörtern.
Probieren Sie es online!
Erläuterung
quelle
)o
für1m>
.V , 7 Bytes
Probieren Sie es online!
Erläuterung:
quelle
JavaScript (ES6), 46 Byte
Nutzt die Tatsache, dass
slice(-1)
das letzte Element eines Arrays zurückgegeben wird.Ausschnitt
Code-Snippet anzeigen
quelle
Vim,
16, 9 Bytes7 Bytes gespart dank @Wossname!
Nimmt die Eingabe eines Wortes pro Zeile vor, z
Ich denke, das sollte in Ordnung sein, da die Eingabe als Liste erlaubt ist.
Probieren Sie es online!
quelle
^vGdjPGd$ggP
(Wobei ^ v die Tastenkombination [Strg + v] ist,dd -> D
,gg -> }
) Danke für den Tipp!> <> ,
4445 BytesNimmt durch Leerzeichen getrennte Wörter an.
Korrektur von Aaron hinzugefügt 1 Byte
quelle
Python 2, 74 Bytes
Probieren Sie es online aus
-5 Bytes, danke an @Rod
quelle
S[:-1]
kann gekürzt werden aufS
; Zipping-Listen unterschiedlicher Länge kürzen automatisch die längerenHaskell , 50 Bytes
Eingabe und Ausgabe erfolgen als Wortlisten.
quelle
f=
.PHP, 62 Bytes
quelle
C #,
7877 BytesKompiliert zu einer Voll-
Func<List<string>, IEnumerable<string>>
/ Formatierten Version:quelle
Brachylog , 12 Bytes
Probieren Sie es online!
Erläuterung
quelle
R,
72-70Bytesfunction(x)paste0(substr(x,1,1)[c(y<-length(x),2:y-1)],substring(x,2))
Probieren Sie es online aus
2 Bytes gespart dank Giuseppe.
Ein- und Ausgabe sind Listen. Nimmt einen Teilstring, der aus den ersten Buchstaben besteht, fügt den letzten Teilstring in den Vordergrund ein und fügt ihn zusammen mit einem Teilstring des restlichen Wortes ein. Der Radrennschritt ist ein Killer, aber ich kann keinen Weg finden, ihn weiter zu reduzieren.
quelle
2:y-1
anstelle von1:(y-1)
da:
Vorrang haben,-
wodurch Sie 2 Bytes sparen.substring
als FunktionsargumentPython 2 + Numpy, 104 Bytes
quelle
APL (Dyalog) , 6 Bytes
Nimmt eine Matrix mit einem Wort pro Spalte.
Probieren Sie es online!
¯1∘⌽
einen schritt nach rechts drehen@
beim1
Reihe 1quelle
Mathematica, 59 Bytes
Probieren Sie es online!
Nimmt und gibt eine Liste von Wörtern zurück.
Wenn Sie es vorziehen, Zeichenfolgen zu nehmen und zurückzugeben, funktioniert dies für 87 Bytes:
quelle
Retina,
463731 BytesProbieren Sie es online
Wird noch golfen ..
quelle
(.*)
und nicht fallen lassen$3
?+
in der ersten Zeile nach a*
drehen, drehen Sie(.* .)
in der dritten Zeile nach(.*)
-2 Bytes. Probieren Sie es online!kdb +,
2522 BytesLösung:
Beispiel:
Erläuterung:
Extra:
Eine Version, die eine reguläre Zeichenfolge (37 Byte) benötigt:
quelle
Perl 5 , 40 Bytes
39 Byte Code + 1 für
-a
Probieren Sie es online!
quelle
Netzhaut ,
25 bis20 BytesDie Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.
Probieren Sie es online!
Eingang und Ausgang sind zeilenweise getrennt. Die Testsuite führt die erforderliche E / A-Konvertierung aus der Raumtrennung durch.
quelle
Mathematica, 134 Bytes
quelle
Pyth, 12 Bytes
Nimmt eine Liste von Wörtern und gibt eine Liste von Wörtern zurück.
Versuch es!
quelle
Java (OpenJDK 8) , 97 Byte
Probieren Sie es online!
quelle
C
106.77Bytes-29 Bytes von Scottinet
Ändert die Zeichenfolge an Ort und Stelle.
Ungolfed:
quelle
J , 34 Bytes
Probieren Sie es online!
quelle
Schale , 11 Bytes
Eingabe und Ausgabe als Liste von Strings, probieren Sie es online!
(Die Kopfzeile wandelt die Eingabe nur in eine Wortliste um und fügt der Ausgabeliste Leerzeichen hinzu.)
Erläuterung
Alternative, 11 Bytes
Probieren Sie es online!
quelle
AWK , 63 Bytes
Probieren Sie es online!
Es scheint, dass es einen Weg geben sollte, die Redundanz zu reduzieren, aber ich sehe es nicht.
Hinweis: Die TIO-Verbindung verfügt über 4 zusätzliche Bytes, um eine mehrzeilige Eingabe zu ermöglichen.
quelle