Buscador de patrones
Parte de la sección Fundamentos del Journey de Ruby de Coddy — lección 87 de 88.
Desafío
FácilLee una cadena de la entrada y encuentra el patrón repetitivo más pequeño que forma la cadena completa.
Un patrón válido debe:
- Tener una longitud que divida exactamente la longitud total de la cadena
- Cuando se repita el número apropiado de veces, recrear la cadena original exactamente
Si la cadena está formada por un patrón repetitivo, imprime ese patrón más pequeño. Si no existe un patrón repetitivo, imprime la cadena original.
Para comprobar si un patrón funciona, puedes usar la multiplicación de cadenas: pattern * count crea una nueva cadena repitiendo el patrón.
Por ejemplo, si la entrada es abcabcabc, la salida debería ser:
abcSi la entrada es xyxyxyxy, la salida debería ser:
xySi la entrada es aaaa, la salida debería ser:
aSi la entrada es hello, la salida debería ser:
helloSi la entrada es abcdef, la salida debería ser:
abcdefPruébalo tú mismo
# Leer la cadena de entrada
s = gets.chomp
# TODO: Escribe tu código a continuación
# Encontrar el patrón repetitivo más pequeño que forma la cadena completa
# Sugerencia: Verificar longitudes de patrón que dividan exactamente la longitud de la cadena
# Usar la multiplicación de cadenas (patrón * cuenta) para verificar si un patrón funciona
result = s # Reemplaza esto con tu solución
# Imprimir el resultado
puts resultTodas las lecciones de Fundamentos
4Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 3Operadores lógicos Parte 47Calculadora para dividir la cuenta
Mensaje de bienvenidaObtener la entrada del usuario10FizzBuzz con un giro
Descripción general del juegoEl método FizzBuzz2Variables y tipos de datos
Números y variablesTipo de dato StringTipo de dato BooleanTipo de dato SymbolComprobación de tipos de datosConvenciones de nomenclaturaResumen: Creación de variables5Toma de decisiones
Sentencia IfIf - ElseRepaso - Calculadora simpleIf - Else anidadosSentencia Unless8Bucles
Bucle For con rangosBucle WhileBreakNextRepaso - FactorialBucle TimesBucle UntilBucles anidadosRepaso - Entrada dinámica3Operadores Parte 1
Operadores aritméticosOperador móduloAtajos aritméticosResumen - Matemáticas simplesOperadores de comparación6Entrada y Salida Básica
Salida con putsSalida con print y pSalida con variablesEntrada con getsMétodo chompConversión de tiposResumen - Calculadora de edadResumen - Verdadero o falso