Herausforderung:
Wenn Sie eine Zeichenfolge s
für die Zeichen a
- z
, A
- Z
, 0
- 9
angeben, hängen Sie die Länge von s
an sich selbst an und zählen die zusätzlichen Zeichen in der Länge als Teil der Gesamtlänge von s
.
Eingang:
Nur eine Zeichenfolge von beliebiger Länge (kann leer sein).
Ausgabe:
Dieselbe Zeichenfolge, aber mit der Länge am Ende angehängt. Die Zeichen, die die Länge darstellen, sollten ebenfalls als Teil der Länge gezählt werden. In Fällen, in denen mehrere gültige Längen angehängt werden müssen, wählen Sie die kleinstmögliche aus (Beispiele finden Sie unter Testfälle).
Testfälle:
INPUT -> OUTPUT // Comment
aaa -> aaa4
-> 1 // Empty string
aaaaaaaa -> aaaaaaaa9 // aaaaaaaa10 would also normally be valid, but violates using the smallest number rule mentioned above
aaaaaaaaa -> aaaaaaaaa11
a1 -> a13 // Input can contain numbers at the end of the string, you do not have to handle the fact that it looks like 13 rather than 3.
Longer test case(s):
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa101
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa102
Regeln:
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes. Standardlücken sind verboten. Einsendungen können ein gesamtes Programm oder eine Funktion sein, und Sie können entweder das Ergebnis als Standardausgabe drucken oder es als Variable von einer Funktion zurückgeben.
quelle
Antworten:
Pyth - 7 Bytes
Probieren Sie es hier online aus .
quelle
JavaScript (ES6), 32 Byte
Wie es funktioniert
Beginnend mit
N=0
testen wir das N-te Zeichen (0-basiert) der Zeichenfolge, die aus der Verkettung der ursprünglichen Eingabezeichenfolge und der Dezimaldarstellung von bestehtN
. Wir erhöhen,N
bis dieses Zeichen nicht mehr existiert.Beispiel:
Testfälle
Code-Snippet anzeigen
quelle
LaTeX, 108/171
\q[] //1
quelle
JavaScript (ES6), 37 Byte
quelle
Run Code Snippet
eine Fehlermeldung angezeigt. Ich habe keine Javascript-Kenntnisse - ich habe es nur versuchtVersion 48.0.2564.97
). Ich werde dies auch mit IE versuchen. Mein Chrome kann nicht aktualisiert werden - Office-SicherheitsproblemeC
676561 BytesWandbox
quelle
Lua 5.2, 32 Bytes
Wobei die Variable a die Eingabezeichenfolge ist.
quelle
Pyke, 8 Bytes ( alte Version )
Erläuterung:
Probieren Sie es hier aus! (Neue Version, 9 Bytes)
quelle
Python 2,
544846 BytesEinfache lösung. Die Rekursion war kürzer.
Probieren Sie es online aus
quelle
(s+`n`)[n:]
fürn<len(s+`n`)
.Haskell, 46 Bytes
Anwendungsbeispiel:
f "aaaaaaaa"
->"aaaaaaaa9"
.Probieren Sie einfach alle Zahlen aus, die mit 0 beginnen und nehmen Sie die erste, die passt.
quelle
Mathematica, 57 Bytes
Unbenannte Funktion, die ein Array von Zeichen als Eingabe verwendet und eine Zeichenfolge zurückgibt. Verwendet die Tatsache, dass, wenn
a
die Länge der Eingabe ist, die an die Eingabe anzuhängende Zahla
plus die Anzahl der Stellen in (a
+ die Länge vona
) ist und nicht nura
plus die Anzahl der Stellen vona
. Leider würde es ohne den~Max~1
Sonderfall nicht die richtige Antwort für die Leerstring-Eingabe geben .quelle
Brachylog , 13 Bytes
Probieren Sie es online!
Erläuterung
Grundsätzlich eine Beschreibung des Problems. Jeder Wert, der
L
größer als die Länge der Eingabe ist, wird geprüft, bis ein Wert gefunden wird , dessen Verkettung mit der Eingabe die Länge dieser Verkettung ist.quelle
Brainfuck, 258 Bytes
Die Eingabe muss durch einen Zeilenvorschub (LF) abgeschlossen werden. Funktioniert nur für Eingaben mit einer Länge von weniger als 256 (einschließlich LF).
Probieren Sie es online!
Erläuterung
Hinweis: Ich habe Code aus dieser SO-Antwort verwendet , um die Länge in ASCII-Ausgabe zu konvertieren. Ich hoffe, dass dies bei PPCG akzeptabel ist. Dies ist meine erste Codegolf-Einsendung und mein zweites BF-Programm. Feedback ist willkommen.
quelle
Netzhaut , 22 Bytes
Probieren Sie es online!
Ah, ohne die Ziffern in der Eingabe wären das nur 11 Bytes:
quelle
Ruby,
625856 BytesGetestet in
irb
.Es gibt wahrscheinlich einen besseren Weg, dies zu tun, aber das war das erste, was ich mir ausgedacht habe. Jede Hilfe beim Golfen wäre dankbar.
edit: Mir ist aufgefallen, dass ich zu viele Klammern verwendet habe.
quelle
l
an einem Ort. Wenn Sie das einbinden, sparen Sie 3 Bytesl=;
. Aber deine Lösung wird immer noch länger sein als meine;)Perl 6 ,
4635 BytesVersuch es
Erweitert:
quelle
05AB1E , 11 Bytes
Ziemlich unkomplizierte Bruteforce:
Probieren Sie es online!
quelle
Python, 39 Bytes
Längere Form:
Iterativ in Python 2 (41 Byte):
Beginnend mit
x
als Eingabezeichenfolgea
wird die Transformationx -> a + str(len(x))
dreimal angewendet. Mir ist immer noch nicht klar, warum drei Anwendungen benötigt werden, um immer den Fixpunkt zu erreichen.quelle
PHP, 42 Bytes
Laufen Sie mit
-r
. Test bei OnlinePHPfunctions .quelle
Bash, 47 Bytes
Speichern Sie dies als Skript und übergeben Sie die Eingabezeichenfolge als Argument.
Es ist eine Brute-Force-Implementierung: Probieren Sie jede Zahl der Reihe nach aus, bis Sie eine finden, die funktioniert.
quelle
> <> (Fisch) 35 Bytes
Nimmt Eingaben in den Stapel auf, vergleicht die Länge mit den Werten 9,99,999 ... und addiert 1 zur Stapellänge, wenn die Länge größer ist.
quelle
Haskell ,
61-60BytesProbieren Sie es online!
Rekursive Lösung. Verwendungszweck:
quelle
C #, 77 Bytes
quelle
return(n+(a+1+c))
als verwendena=n.Length
?-1
vonint c=(a+1).ToString().Length-1
und+1
von der Rückgabe fallen lassen?aa...a100
stattaa...a101
für den 99a
Testfall.MATL , 11 Bytes
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
quelle
Ruby, 51 Bytes (Programm)
Ruby, 49 Bytes (Funktion)
Programm (letzter Zeilenumbruch ist nicht erforderlich und daher nicht bewertet):
Funktion (letzte Zeile wird gewertet):
quelle
Faktor 55 Bytes
Es ist ein Spaziergang im Park! Sobald ich die Frage gelesen hatte, fiel mir dies in meinem Kopf ein.
quelle
Clojure, 72 Bytes
quelle
R, 49 Bytes
Ziemlich einfache Lösung.
quelle
Read 1 item Error in nchar(x + 1) : object 'x' not found
. Ich fand, dass(t<-nchar(a))+...
das funktioniert hat.Wolfram, 56
Da
l = StringLength[x]
hängt esl + IntegerLength[l + IntegerLength[l]]
anx
.quelle
Labyrinth ,
484541 BytesProbieren Sie es online!
4 Bytes gespart, danke an @Martin Ender
quelle
ForceLang, 83 Bytes
quelle