La cenefa de Talavera
- O(n²) · Muy difícil
- Plan completo
- Python
- JavaScript
- textos
- ciclos
- índices
Enunciado
Del muro de una capilla poblana se salvó apenas un tramo de la cenefa de Talavera, y Crispín, el azulejero, quiere hacer el molde que la repite. Mientras más corto el molde, menos azulejos tiene que pintar a mano. Escribe una función que reciba cenefa, un texto de letras minúsculas con al menos una letra: cada letra es un azulejo. Un molde de largo k sirve si cada azulejo, de la posición k (contando desde 0) al final, es igual al que está k lugares antes; el tramo puede acabar a media copia. Regresa el k más chico que sirve, un entero entre 1 y el largo del texto. El largo siempre sirve, porque no queda ningún azulejo que revisar. Con "abcabcab": el 1 no sirve (la b no es igual a la a), el 2 tampoco (la c no es igual a la a) y el 3 sí, porque la cenefa se lee abc, abc y ab, la última copia cortada. Regresa 3.
Con "aaaa" regresa 1, y con "abcd" regresa 4.
Ejemplos
El ejemplo
"abcabcab" → 3
Todos los azulejos iguales
"aaaa" → 1
Ningún molde corto sirve
"abcd" → 4
Un solo azulejo
"a" → 1
La última copia queda cortada
"aabaa" → 3
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def molde_corto(cenefa):
passJavaScript
function moldeCorto(cenefa) {
}Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.