Ersetzen Sie eine Zeichenfolge durch sich selbst
Ihr Ziel ist es, eine Zeichenfolge durch eine eigene Zeichenfolge zu ersetzen, indem Sie jedes Zeichen in der ursprünglichen Zeichenfolge durch das vorangegangene Zeichen ersetzen. Beginnen Sie dabei mit dem ersten Zeichen und setzen Sie den Zeilenumbruch fort. Hier sind einige Beispiele zu zeigen, was ich meine:
1. Beispiel:
Input: program
Output: apgopra
How:
Program -> mrogram (replace p by m in program)
-> mpogpam (replace r by p in mrogram)
-> mprgpam (replace o by r in mpogpam)
-> mpropam (replace g by o in mprgpam)
-> mpgopam (replace r by g in mpropam)
-> mpgoprm (replace a by r in mpgopam)
-> apgopra (replace m by a in mpgoprm)
2. Beispiel:
Input: robot
Output: orbro
How:
Robot -> tobot (replace r by t in robot)
-> trbrt (replace o by r in tobot)
-> trort (replace b by o in trbrt)
-> trbrt (replace o by b in trort)
-> orbro (replace t by o in trbrt)
3. Beispiel:
Input: x
Output: x
How:
x -> x (replace x by x in x)
Viertes Beispiel:
Input: xy
Output: xx
How:
xy -> yy (replace x by y in xy)
-> xx (replace y by x in yy)
Nebenbemerkungen:
- Die Zeichenfolge
x
wird nur alphanumerische Zeichen und Leerzeichen enthalten Kleinbuchstaben - Dies ist Code-Golf so kürzester Code in Bytes gewinnt!
Antworten:
CJam, 11 Bytes
Teste es hier.
Erläuterung
quelle
TeaScript , 17 Bytes
192124TeaScript ist JavaScript zum Golfen
Schön und kurz
Versuchen Sie es online (achten Sie auf nachfolgende Leerzeichen in der Eingabe)
Ungolfed & Erklärung
quelle
JavaScript ES6, 69 Bytes
Code-Snippet anzeigen
quelle
F=
in Ihrem Byteanzahl.s.slice(i-1)[0]
ist nicht gleichs.slice(i-1,i)
?i=0
Rubin,
5048 BytesPrüfung:
quelle
Mathematica,
89757457 Bytesquelle
""<>Fold[#/.#2&,c=Characters@#,Thread[c->RotateRight@c]]&
Transpose
und bin gescheitert.Pyth, 13 Bytes
Probieren Sie es online aus. Testsuite.
quelle
k2 - 17 char
Funktion mit 1 Argument.
k2 hat einen eingebauten genannt
_ssr
für S tring S uche und R eplace._ssr[x;y;z]
finde esy
inx
und ersetze es durchz
. Deshalb/
falten wir diese Funktionalität über jeden Ersatz, den wir vornehmen möchten. Für diejenigen , die nicht mit Falten (wie in funktionaler Programmierung), im wesentlichen_ssr/[x; (y1; y2; y3); (z1; z2; z3)]
wird_ssr[_ssr[_ssr[x; y1; z1]; y2; z2]; y3; z3]
. Strings sind Listen ihrer Charaktere, also können wir die Eingabe einfach einen Schritt zurückdrehen und die Ersetzungen erhalten und direkt einstecken.quelle
Haskell, 76 Bytes
haben zu schlecht, ist Haskell nicht einmal ein Build-in Ersetzungsfunktion.
quelle
PHP, 76 Byte
Hier ist die ungolfed Version:
quelle
Python,
67646257 BytesEinfache Lösung, wird sich in etwas so zu verkürzen. Dank @RandyC für 5 Byte zu speichern.
Der Eingang sollte in Anführungszeichen gesetzt werden.
quelle
[:-1]
Seit-Zip-Kürzungen auf das kürzeste iterierbare Maß reduzieren.Haskell, 58 Bytes
Ziemlich ähnlich zu Christians Lösung, aber mit
map
und der Tatsache, dasszip
überflüssige Elemente ignoriert werden, wenn die Listen ungleich lang sind. Es faltet die Liste der Ersetzungen (auf dem Formular(from,to)
) durch und aktualisiert die Zeichenfolge, indem die handgeschriebene Ersetzungsfunktionr
auf jeden Buchstaben abgebildet wird .Der Ausdruck
flip$map.r
wurde mit dem LambdaBot-Plugin "Pointless" abgeleitet.quelle