Uma sequência de caracteres se repete se contiver duas substrings consecutivas equivalentes.
Por exemplo, 2034384538452
repete-se, pois contém 3845
duas vezes consecutivas.
Portanto, seu desafio é decidir se uma sequência contém uma subseqüência de substring. Você pode considerar a entrada como uma string ou uma matriz de caracteres.
Você nunca receberá uma entrada vazia e o comprimento da substring (se existir) pode ser 1 ou mais.
Eu uso 1
e 0
aqui como meus valores de verdade e falsidade, mas você pode usar valores diferentes, desde que eles sejam verdade e falsidade em seu idioma.
Exemplos:
abcab -> 0
bdefdefg -> 1
Hello, World! -> 1
pp.pp/pp -> 1
q -> 0
21020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120210121020121012021012102012021020121012021012102012101202102012021012102012021020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120210121020120210201210120210201202101210201210120210121020120210201210120210121020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120 -> 0
(O último exemplo foi gerado a partir da quantidade de unidades entre cada zero na sequência Thue-Morse)
Respostas:
Retina , 6 bytes
Experimente online!
Valor positivo para a verdade; zero para falsey.
Como funciona
Retorna o número de correspondências da regex
/(.+)\1/g
.fonte
Braquilog , 3 bytes
Experimente online!
fonte
Gelatina ,
65 bytesEste é um programa completo. O TIO não pode lidar com o último caso de teste sem truncá-lo.
Experimente online! (último caso de teste truncado para 250 dígitos)
Como funciona
fonte
Mathematica, 32 bytes
fonte
StringContainsQ[x__~~x__]
e!StringFreeQ[#,x__~~x__]&
são ambos mais curtos.Java, 27 bytes
Praticamente uma duplicata da resposta da Retina , mas não há como o Java ficar mais curto.
fonte
05AB1E , 5 bytes
Experimente online!
Saídas 1 como valor verdadeiro e 0 como valor falso
Explicação
fonte
Python , 38 bytes
Experimente online!
Bocejo, um regex. Verifica se a sequência contém uma sequência de um ou mais caracteres,
.+
seguida pela mesma sequência que acabou de ser capturada. O objeto de pesquisa de saída é Truthy se houver pelo menos uma correspondência, como pode ser verificado porbool
.Usar
compile
aqui salva ao escrever um lambda:Python , 54 bytes
Experimente online!
Procura por um substring que é composto de dois ou mais iguais cadeias concatenadas, como verificado por
s in(s*2)[1:-1]
como nos esta resposta . As seqüências de caracteres são geradas recursivamente escolhendo cortar o primeiro ou o último caractere. Isso é exponencial, portanto expira o tempo no caso de teste grande.Quase acidentes:
O primeiro não usa o Python
in
para verificar substrings e, portanto, pode ser adaptado para outras linguagens.fonte
Pitão -
1098 bytesRetorna uma lista de todas as substrings repetidas (que, se não houver alguma, é uma lista vazia, que é falsa)
Tente
Explicação:
fonte
f}+TTQ.:
obras a partir de 1 Byte menos: ligaçãoCheddar , 60 bytes
Experimente online!
fonte
@.test(/(.+)\1/)
PHP , 32 bytes
Experimente online!
PHP , 38 bytes
Experimente online!
fonte
Python 3 ,
7366 bytes-7 bytes graças a @LeakyNun
Experimente online!
fonte
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
Teste-o
Expandido:
fonte
PHP, 32 bytes
Corra como cano com
-F
. Desculpe Jörg, eu não tinha notado que você postou o mesmo .versão não regex,
8482 bytessai com o código de retorno
0
para repetição, atinge o tempo limite (e sai com erro) para nenhum. Corra como cano com-nr
.assume entrada ASCII imprimível; substituir
~
coma&
qualquer ASCII.fonte
JavaScript (ES6), 19 bytes
fonte
/(.+)\1/.test
?/(.+)\1/.test
à submissão completa./(.+)\1/.test
não tem ligação (não temthis
).f=/(.+)\1/.test;f('aa')
não funcionaria, por exemplo. Você precisaria/./.test.bind(/(.+)\1/)
::/(.+)\1/.test
(15 bytes)Pitão, 15 bytes
Tente!
fonte
V , 6 bytes
Experimente online!
Suíte de teste!
O programa gera
0
valores falsey e um número inteiro positivo para valores positivos.(Observe que houve um pequeno bug, então eu tive que ganhar 1 byte. Agora, após a correção do bug, poderei substituir
.«
por\x82
)Explicação
fonte
Japt, 8
+ 1=98 bytesExperimente online . Saídas
null
para falsy, e uma matriz contendo todas as seqüências repetidas para truthy.Explicação
fonte
è
para retornar o número de correspondências e soltar o sinalizador.null
, o que é falso.00
, ele gera00
. Você tem certeza de que isso é verdade em japonês?"00"
é.-Q
sinalizador "prettyprints" a saída, para que você possa ver que é uma matriz que contém uma única string.Queijo Cheddar, 16 bytes
Esta é uma função. Experimente online!
fonte