Détecteur de motifs
Fait partie de la section Fondamentaux du Journey Ruby de Coddy — leçon 87 sur 88.
Défi
FacileLisez une chaîne de caractères à partir de l'entrée et trouvez le plus petit motif répétitif qui forme l'intégralité de la chaîne.
Un motif valide doit :
- Avoir une longueur qui divise uniformément la longueur totale de la chaîne
- Lorsqu'il est répété le nombre de fois approprié, recréer exactement la chaîne d'origine
Si la chaîne est composée d'un motif répétitif, affichez ce plus petit motif. Si aucun motif répétitif n'existe, affichez la chaîne d'origine.
Pour vérifier si un motif fonctionne, vous pouvez utiliser la multiplication de chaînes : pattern * count crée une nouvelle chaîne en répétant le motif.
Par exemple, si l'entrée est abcabcabc, la sortie devrait être :
abcSi l'entrée est xyxyxyxy, la sortie devrait être :
xySi l'entrée est aaaa, la sortie devrait être :
aSi l'entrée est hello, la sortie devrait être :
helloSi l'entrée est abcdef, la sortie devrait être :
abcdefEssayez vous-même
# Lire la chaîne d'entrée
s = gets.chomp
# À FAIRE : Écrivez votre code ci-dessous
# Trouver le plus petit motif répétitif qui forme la chaîne entière
# Indice : Vérifiez les longueurs de motif qui divisent uniformément la longueur de la chaîne
# Utilisez la multiplication de chaînes (motif * nombre) pour vérifier si un motif fonctionne
result = s # Remplacez ceci par votre solution
# Afficher le résultat
puts resultToutes les leçons de Fondamentaux
4Opérateurs, partie 2
Opérateurs logiques, partie 1Opérateurs logiques, partie 2Récapitulatif - Logique simpleOpérateurs logiques, partie 3Opérateurs logiques, partie 47Calculateur de partage de facture
Message de bienvenueSaisie de l'utilisateur10FizzBuzz avec une variante
Présentation du jeuLa méthode FizzBuzz2Variables et types de données
Nombres et variablesType de données StringType de données BooleanType de données SymbolVérification des types de donnéesConventions de nommageRécapitulatif - Création de variables5Prise de décision
Instruction IfIf - ElseRécapitulatif - Calculatrice simpleIf - Else imbriquésInstruction Unless8Boucles
Boucle For avec des intervallesBoucle WhileBreakNextRécapitulatif - FactorielleBoucle TimesBoucle UntilBoucles imbriquéesRécapitulatif - Entrée dynamique3Les opérateurs, partie 1
Opérateurs arithmétiquesOpérateur moduloRaccourcis arithmétiquesRécapitulatif - Calculs simplesOpérateurs de comparaison6Entrées/Sorties de base
Sortie avec putsSortie avec print et pSortie avec des variablesEntrée avec getsLa méthode chompConversion de typesRécapitulatif - Calculateur d'âgeRécapitulatif - Vrai ou Faux9Méthodes
Définir une méthodeParamètres de méthodeValeurs de retourRécapitulatif - Méthode SigmaRécapitulatif - Méthode de validationValeurs de paramètres par défaut12Itérer sur les collections
L'itérateur EachEach avec indexItérer sur les chaînes de caractèresMap et Collect