Eine ziemlich einfache Herausforderung: Sie erhalten zwei Eingaben, eine Zeichenfolge und eine Zahl (die Zahl kann als Zeichenfolge verwendet werden, dh "123"
anstelle von 123
).
Wenn die Zeichenfolge nicht mit einer Zahl endet (dh nicht mit dem regulären Ausdruck übereinstimmt \d$
), hängen Sie die Nummer einfach an das Ende der Zeichenfolge an.
Wenn die Zeichenfolge mit einer Zahl endet (dh mit dem regulären Ausdruck übereinstimmt \d+$
), sollten Sie diese zuerst löschen und dann die Nummer anhängen.
Keine der Eingaben wird jemals ungültig oder leer sein (ungültig wird durch die numerische Eingabe definiert, die nicht nur Ziffern enthält)
Die Nummer wird niemals a -
oder a enthalten .
.
Die Zeichenfolge enthält niemals eine neue Zeile oder nicht druckbare Zeichen ohne Leerzeichen.
Testfälle:
abc123 + 345 -> abc345
123 + 1 -> 1
hello + 33 -> hello33
123abc123 + 0 -> 123abc0
ab3d5 + 55 -> ab3d55
onetwo3 + 3 -> onetwo3
99ninenine + 9999 -> 99ninenine9999
Python 2 , 30 Bytes
Probieren Sie es online!
quelle
a
Ende mit ,"L"
weil56**7
auswertet zu1727094849536L
. Eingabe vona="abcdL"; b="59"
Ausgaben"abcd59"
. Ihr TIO-Link wird nicht lange ausgewertet56**7
, sodass ich nicht weiß, was passiertPHP,
37363533 Bytes1 Byte gespart dank Jörg Hülsermann .
quelle
chop
as alias speichert 1 BytesPerl 5, 12 Bytes
11 Byte Code + 1 für
-p
.Probieren Sie es online!
quelle
Java 8, 32 Bytes
Nimmt Eingaben
a
als String, undb
es spielt keine Rolle, ob es sich um einen String oder eine Ganzzahl handelt (obwohl ich im TIO-Link unten Integer verwende).Probieren Sie es hier aus.
quelle
Python 2 , 32 Bytes
Probieren Sie es online!
Übernimmt die Eingaben in umgekehrter Reihenfolge, beide als String.
quelle
05AB1E , 9 Bytes
Probieren Sie es online! Wahrscheinlich eine schlechte Lösung, aber es ist das Beste, was ich mir einfallen lassen konnte
Erläuterung
quelle
Japt , 10 Bytes
Probieren Sie es online!
quelle
U
es nicht mit einer Zahl endet. Versuchen Sie es*
in der RegEx statt+
. TIOU
es mit einer Zahl endet. Ich denke, Sie müssen es tunr"%d+$" +V
Python 2 ,
444139 BytesBEARBEITEN: -4 Bytes dank @Dom Hastings. Ich verwende nicht viel reguläre Ausdrücke.
BEARBEITEN 2 : -2 Bytes dank @totallyhuman, das darauf hinweist, dass die Zahl als Zeichenfolge verwendet werden kann
War zu erwarten ...
Entfernt einfach die Ziffern am Ende der Zeichenfolge und hängt die Nummer an
Probieren Sie es online!
quelle
\d*$
, können Sie den""
durch ``y
`` ersetzen , um einige Bytes zu sparen?y
Parameter auch als Zeichenfolge verwenden.Pip ,
97 Bytes@ DLosc hat mir 2 Bytes gespart!
Probieren Sie es online!
Erläuterung
quelle
Gelee , 5 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
JavaScript (ES6),
282625 Bytequelle
?
erforderlich?Ruby , 21 Bytes
Nimmt zwei Zeichenketten in die Eingabe auf.
Probieren Sie es online!
quelle
C #, 45 Bytes
Erläuterung:
quelle
V ,
74 BytesProbieren Sie es online!
Dies verwendet den gleichen regulären Ausdruck wie die obige Retina-Antwort:
quelle
Perl 6 , 20 Bytes
quelle
Tcl 32 Bytes
Ich bin mir nicht sicher über die erwartete Schnittstelle. Dies geschieht als Prozedur, die die beiden Eingaben als Aufrufargumente akzeptiert. Um es in ein eigenständiges Skript umzuwandeln, das Eingaben von stdin liest und das Ergebnis an stdout ausgibt, würde man die zusätzliche Zeile benötigen:
oder würde alles "inline" machen:
regsub verwendet einen RE, den Original-String und einen String, durch den der passende Part ersetzt wird.
quelle
Mathematica, 48 Bytes
Es gibt bereits eine Mathematica-Lösung (84 Byte).
quelle
Karotte ,
1621 BytesProbieren Sie es online! (Eingang ist Zeilenvorschub getrennt)
Erläuterung
Ich musste den bytecount um 5 erhöhen, weil der Code für Testfälle wie
a5b3
mit mehreren Ziffern nicht funktionierte .quelle
Haskell,
75 Bytes95 Bytes917961 BytesIch habe versucht, dies ohne Regex zu tun, also wäre das vielleicht eine dramatisch verbesserte Antwort. Es gibt auch ein paar Möglichkeiten, wie ich vorgehen könnte, sodass ich nicht sicher bin, ob ich ein paar Bytes mit einem anderen Ansatz rasieren kann.
UPDATE: Ich bin in Bytes aufgestiegen, weil ich festgestellt habe, dass ich den Testfall nicht bestanden habe, bei dem Zahlen in der Zeichenfolge existieren, die nicht das Suffix sind. Jetzt bin ich sicher, dass Regex eine viel bessere Antwort liefern würde.
UPDATE2: Nach einigem großartigem Feedback wurden mehr Bytes golfen!
quelle
b=(`elem`['0'..'9'])
ist kürzer alsisDigit
+import
.dropWhile
kann ersetzt werden durchsnd.span
, dh=r(snd$span b$r d)++e
. Wenn Sie den Test umkehrenb=(`notElem`...)
, können Sie mit gehend#e|b$last$d=d++e|2>1=r(snd$break b$r d)++e
.|b$last$d=d++e|2>1
Teil nicht einfach fallen gelassen werden? Alle Testfälle scheinen gut zu funktionieren. Probieren Sie es online!Mathematica, 84 Bytes
Geben Sie 2 Zeichenfolgen ein
Ausgabe
quelle
C (GCC) ,
99989695 BytesSollte in der Lage sein, dies ein bisschen runter zu golfen ...
Probieren Sie es online!
quelle
Nein , 11 Bytes
Probieren Sie es hier aus!
Schließen Sie eine Zeichenfolge bei der Eingabe in Anführungszeichen ein
Erläuterung:
quelle
05AB1E , 8 Bytes
Probieren Sie es online!
Erläuterung:
quelle