Localizador de Padrões
Parte da seção Fundamentos do Journey de Ruby da Coddy — lição 87 de 88.
Desafio
FácilLeia uma string da entrada e encontre o menor padrão de repetição que forma a string inteira.
Um padrão válido deve:
- Ter um comprimento que divida uniformemente o comprimento total da string
- Quando repetido o número apropriado de vezes, recriar a string original exatamente
Se a string for composta por um padrão de repetição, imprima esse menor padrão. Se não existir nenhum padrão de repetição, imprima a string original.
Para verificar se um padrão funciona, você pode usar a multiplicação de strings: pattern * count cria uma nova string repetindo o padrão.
Por exemplo, se a entrada for abcabcabc, a saída deve ser:
abcSe a entrada for xyxyxyxy, a saída deve ser:
xySe a entrada for aaaa, a saída deve ser:
aSe a entrada for hello, a saída deve ser:
helloSe a entrada for abcdef, a saída deve ser:
abcdefExperimente você mesmo
# Lê a string de entrada
s = gets.chomp
# TODO: Escreva seu código abaixo
# Encontre o menor padrão de repetição que forma a string inteira
# Dica: Verifique comprimentos de padrão que dividem uniformemente o comprimento da string
# Use a multiplicação de strings (padrão * contagem) para verificar se um padrão funciona
result = s # Substitua isso pela sua solução
# Exibe o resultado
puts resultTodas as lições de Fundamentos
4Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 3Operadores Lógicos Parte 47Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo Entrada do Usuário10FizzBuzz com um Toque Especial
Visão Geral do JogoO Método FizzBuzz2Variáveis e Tipos de Dados
Números e VariáveisTipo de Dado StringTipo de Dado BooleanTipo de Dado SymbolVerificando Tipos de DadosConvenções de NomenclaturaRecapitulação - Criação de Variáveis5Tomada de Decisão
Instrução IfIf - ElseRecapitulação - Calculadora SimplesIf - Else AninhadoInstrução Unless8Laços de Repetição
Loop For com IntervalosLoop WhileBreakNextRecapitulação - FatorialLoop TimesLoop UntilLoops AninhadosRecapitulação - Entrada Dinâmica3Operadores Parte 1
Operadores AritméticosOperador de MóduloAtalhos AritméticosRecapitulação - Matemática SimplesOperadores de Comparação6IO Básico
Saída com putsSaída com print e pSaída com VariáveisEntrada com getsMétodo chompConversão de TiposRecapitulação - Calculadora de IdadeRecapitulação - Verdadeiro ou Falso9Métodos
Definindo um MétodoParâmetros de MétodoValores de RetornoRecapitulação - Método SigmaRecapitulação - Método de ValidaçãoValores de Parâmetro Padrão15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do Programa