Eine Zeichenfolge wird wiederholt, wenn sie zwei aufeinanderfolgende Teilzeichenfolgen enthält, die äquivalent sind.
Beispielsweise werden 2034384538452
Wiederholungen 3845
nacheinander ausgeführt , da sie zweimal enthalten sind.
Daher müssen Sie entscheiden, ob eine Zeichenfolge eine sich wiederholende Teilzeichenfolge enthält. Sie können die Eingabe als Zeichenfolge oder als Zeichenfolge verwenden.
Sie erhalten niemals eine leere Eingabe, und die Länge der Teilzeichenfolge (falls vorhanden) kann 1 oder mehr betragen.
Ich verwende 1
und 0
hier als meine wahren und falschen Werte, aber Sie können andere Werte verwenden, solange sie in Ihrer Sprache wahr und falsch sind.
Beispiele:
abcab -> 0
bdefdefg -> 1
Hello, World! -> 1
pp.pp/pp -> 1
q -> 0
21020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120210121020121012021012102012021020121012021012102012101202102012021012102012021020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120210121020120210201210120210201202101210201210120210121020120210201210120210121020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120 -> 0
(Das letzte Beispiel wurde aus der Anzahl der Einsen zwischen jeder Null in der Thue-Morse-Sequenz generiert.)
Antworten:
Netzhaut , 6 Bytes
Probieren Sie es online!
Positiver Wert für Wahrhaftigkeit; Null für Falsey.
Wie es funktioniert
Gibt die Anzahl der Übereinstimmungen des regulären Ausdrucks zurück
/(.+)\1/g
.quelle
Brachylog , 3 Bytes
Probieren Sie es online!
quelle
Gelee ,
65 BytesDies ist ein volles Programm. TIO kann den letzten Testfall nicht verarbeiten, ohne ihn abzuschneiden.
Probieren Sie es online! (letzter Testfall auf 250 Stellen gekürzt)
Wie es funktioniert
quelle
Mathematica, 32 Bytes
quelle
StringContainsQ[x__~~x__]
und!StringFreeQ[#,x__~~x__]&
sind beide kürzer.Java, 27 Bytes
Fast ein Duplikat der Retina-Antwort , aber es gibt keine Möglichkeit, dass Java kürzer wird.
quelle
05AB1E , 5 Bytes
Probieren Sie es online!
Gibt 1 als Wahrheitswert und 0 als Falschwert aus
Erläuterung
quelle
Python , 38 Bytes
Probieren Sie es online!
Gähnen, ein Regex. Überprüft, ob die Zeichenfolge eine Zeichenfolge aus einem oder mehreren Zeichen enthält,
.+
gefolgt von derselben Zeichenfolge, die gerade erfasst wurde. Das Ausgabesuchobjekt ist Truthy, wenn mindestens eine Übereinstimmung vorliegt, die von überprüft werden kannbool
.Die Verwendung
compile
hier erspart das Schreiben eines Lambdas:Python , 54 Bytes
Probieren Sie es online!
Sucht nach einer Teilzeichenfolge, die aus zwei oder mehr gleichen, verketteten Zeichenfolgen besteht,
s in(s*2)[1:-1]
wie in dieser Antwort angekreuzt . Teilzeichenfolgen werden rekursiv generiert, indem entweder das erste oder das letzte Zeichen ausgeschnitten wird. Dies ist exponentiell, daher tritt bei dem großen Testfall eine Zeitüberschreitung auf.Beinahe fehlgeschlagen:
Der erste verwendet Python nicht
in
zum Prüfen von Teilzeichenfolgen und kann daher an andere Sprachen angepasst werden.quelle
Pyth -
1098 BytesGibt eine Liste aller sich wiederholenden Teilzeichenfolgen zurück (falls keine vorhanden sind, handelt es sich um eine leere Liste, die falsch ist).
Versuch es
Erläuterung:
quelle
f}+TTQ.:
funktioniert 1 Byte weniger: LinkCheddar , 60 Bytes
Probieren Sie es online!
quelle
@.test(/(.+)\1/)
PHP , 32 Bytes
Probieren Sie es online!
PHP , 38 Bytes
Probieren Sie es online!
quelle
Python 3 ,
7366 Bytes-7 Bytes dank @LeakyNun
Probieren Sie es online!
quelle
f=lambda s:s and(any(s[:i]*2 in s for i in range(1,len(s)))or f(s[1:]))
lambda s:any(2*s[j:i]in s for i in range(len(s))for j in range(i))
Perl 6 , 11 Bytes
Probier es aus
Erweitert:
quelle
PHP, 32 Bytes
Als Rohr mit laufen lassen
-F
. Sorry Jörg, ich hatte nicht gemerkt das du das selbe gepostet hattest .Nicht-Regex-Version,
8482 BytesExits mit Rückkehrcode
0
für eine Wiederholung, Timeout (und Exits mit Fehler) für keine. Als Rohr mit laufen lassen-nr
.setzt druckbare ASCII-Eingabe voraus; ersetzen Sie
~
mita&
für jedes mögliches ASCII.quelle
JavaScript (ES6), 19 Byte
quelle
/(.+)\1/.test
?/(.+)\1/.test
selbst als die vollständige Vorlage./(.+)\1/.test
ist ungebunden (hat keinethis
).f=/(.+)\1/.test;f('aa')
würde zum Beispiel nicht funktionieren. Sie würden brauchen/./.test.bind(/(.+)\1/)
::/(.+)\1/.test
(15 Bytes)Pyth, 15 Bytes
Versuch es!
quelle
V , 6 Bytes
Probieren Sie es online!
Test Suite!
Das Programm gibt
0
für falsche Werte und für positive Werte eine positive ganze Zahl aus.(Beachten Sie, dass es ein kleiner Fehler war, so dass ich ein Byte zu gewinnen hatte. Jetzt , nach dem Bugfix, ich in der Lage sein , zu ersetzen
.«
mit\x82
)Erläuterung
quelle
Japt, 8
+ 1=98 BytesProbieren Sie es online aus . Ausgaben
null
für falsy und ein Array, das alle sich wiederholenden Zeichenfolgen für truthy enthält.Erläuterung
quelle
è
die Anzahl der Übereinstimmungen zurückgeben und das Flag löschen können.null
, was falsch ist.00
gibt es aus00
. Sind Sie sicher, dass dies in Japt wahr ist?"00"
lautet.-Q
Flag "prettyprints" druckt die Ausgabe, sodass Sie sehen können, dass es sich um ein Array handelt, das eine einzelne Zeichenfolge enthält.Cheddar, 16 Bytes
Dies ist eine Funktion. Probieren Sie es online!
quelle