Une chaîne de caractères se répète si elle contient deux sous-chaînes consécutives équivalentes.
Par exemple, se 2034384538452
répète car il contient 3845
deux fois de suite.
Par conséquent, votre défi consiste à décider si une chaîne contient une sous-chaîne répétitive. Vous pouvez prendre l'entrée comme une chaîne ou un tableau de caractères.
Vous ne recevrez jamais une entrée vide et la longueur de la sous-chaîne (si elle existe) peut être 1 ou plus.
J'utilise 1
et 0
ici comme mes valeurs de vérité et de fausseté, mais vous pouvez utiliser des valeurs différentes, tant qu'elles sont véridiques et fausses dans votre langue.
Exemples:
abcab -> 0
bdefdefg -> 1
Hello, World! -> 1
pp.pp/pp -> 1
q -> 0
21020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120210121020121012021012102012021020121012021012102012101202102012021012102012021020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120210121020120210201210120210201202101210201210120210121020120210201210120210121020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120 -> 0
(Le dernier exemple a été généré à partir du nombre de uns entre chaque zéro dans la séquence Thue-Morse)
Réponses:
Rétine , 6 octets
Essayez-le en ligne!
Valeur positive pour véridique; zéro pour falsey.
Comment ça fonctionne
Renvoie le nombre de correspondances de l'expression régulière
/(.+)\1/g
.la source
Brachylog , 3 octets
Essayez-le en ligne!
la source
Gelée ,
65 octetsCeci est un programme complet. TIO ne peut pas gérer le dernier cas de test sans le tronquer.
Essayez-le en ligne! (dernier cas de test tronqué à 250 chiffres)
Comment ça fonctionne
la source
Mathematica, 32 octets
la source
StringContainsQ[x__~~x__]
et!StringFreeQ[#,x__~~x__]&
sont tous deux plus courts.Java, 27 octets
Quasiment un double de la réponse Retina , mais il n'y a aucun moyen que Java raccourcisse.
la source
05AB1E , 5 octets
Essayez-le en ligne!
Sorties 1 comme valeur vraie et 0 comme valeur fausse
Explication
la source
Python , 38 octets
Essayez-le en ligne!
Bâillement, une expression régulière. Vérifie si la chaîne contient une chaîne d'un ou plusieurs caractères
.+
suivie de la même chaîne qui vient d'être capturée. L'objet de recherche en sortie est Truthy s'il y a au moins une correspondance, comme cela peut être vérifié parbool
.L'utilisation
compile
ici permet d'économiser sur l'écriture d'un lambda:Python , 54 octets
Essayez-le en ligne!
Recherche une sous-chaîne composée de deux chaînes égales ou plus concaténées, comme vérifié par
s in(s*2)[1:-1]
comme dans cette réponse . Les sous-chaînes sont générées de manière récursive en choisissant de couper le premier ou le dernier caractère. C'est exponentiel, donc il expire sur le grand cas de test.Évités de justesse:
Le premier n'utilise pas Python
in
pour vérifier les sous-chaînes, et pourrait donc être adapté à d'autres langages.la source
Pyth -
1098 octetsRenvoie une liste de toutes les sous-chaînes répétitives (qui s'il n'y en a pas, est une liste vide, qui est fausse)
Essayez-le
Explication:
la source
f}+TTQ.:
fonctionne à partir de 1 octet de moins: lienCheddar , 60 octets
Essayez-le en ligne!
la source
@.test(/(.+)\1/)
PHP , 32 octets
Essayez-le en ligne!
PHP , 38 octets
Essayez-le en ligne!
la source
Python 3 ,
7366 octets-7 octets grâce à @LeakyNun
Essayez-le en ligne!
la source
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 octets
Essaye-le
Étendu:
la source
PHP, 32 octets
Exécuter en tant que tuyau avec
-F
. Désolé Jörg, je n'avais pas remarqué que tu avais posté le même .version non regex,
8482 octetsquitte avec code retour
0
pour une répétition, expire (et quitte avec erreur) pour aucune. Exécuter en tant que tuyau avec-nr
.suppose une entrée ASCII imprimable; remplacer
~
para&
pour tout ASCII.la source
JavaScript (ES6), 19 octets
la source
/(.+)\1/.test
?/(.+)\1/.test
lui-même la soumission complète./(.+)\1/.test
n'est pas lié (n'a pasthis
).f=/(.+)\1/.test;f('aa')
ne fonctionnerait pas, par exemple. Vous auriez besoin/./.test.bind(/(.+)\1/)
::/(.+)\1/.test
Pyth, 15 octets
Essayez!
la source
V , 6 octets
Essayez-le en ligne!
Suite de tests!
Les résultats du programme
0
génère des valeurs de falsey et un entier positif pour les valeurs positives.(Notez qu'il y avait un petit bug, donc j'ai dû gagner 1 octet. Maintenant, après la correction du bug, je pourrai le remplacer
.«
par\x82
)Explication
la source
Japt, 8
+ 1=98 octetsEssayez-le en ligne . Les sorties
null
pour faux, et un tableau contenant toutes les chaînes répétitives pour vérité.Explication
la source
è
pour renvoyer le nombre de correspondances et supprimer l'indicateur.null
, ce qui est faux.00
, il sort00
. Êtes-vous sûr que c'est vrai en Japt?"00"
est.-Q
drapeau "prettyprints" la sortie afin que vous puissiez voir que c'est un tableau contenant une seule chaîne.Cheddar, 16 octets
Ceci est une fonction. Essayez-le en ligne!
la source