Analyse de mots
Fait partie de la section Logique et Flux du Journey Ruby de Coddy. Leçon 54 sur 56.
Un défi autonome qui fait appel aux chaînes de caractères, aux hachages, à Hash.new(0) et aux méthodes Enumerable, le tout en même temps.
Défi
MoyenLisez une seule ligne d'entrée, une phrase. Analysez-la et affichez trois lignes :
- Le nombre de mots uniques (insensible à la casse, avec la ponctuation supprimée). Les mots répétés ne comptent qu'une seule fois.
- Les mots répétés (ceux apparaissant plus d'une fois), triés par ordre alphabétique, joints par
,. Si aucun, affichez(none). - Les mots palindromes, des mots qui se lisent de la même manière à l'endroit et à l'envers, de longueur ≥ 2, triés par ordre alphabétique, joints par
,. Si aucun, affichez(none).
Supprimez les caractères .,!?:;"() de chaque mot avant le traitement. Mettez tout en minuscules pour la comparaison.
Pour l'entrée Madam saw a racecar. Dad said hello hello to mom., la sortie est :
9
hello
dad, madam, mom, racecarEssayez vous-même
input = gets.chomp
# TODO: diviser, supprimer la ponctuation, mettre en minuscules, puis afficher :
# le nombre de mots uniques, les mots répétés, les palindromes (longueur >= 2)
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et Flux
1Les chaînes de caractères en profondeur
Aperçu des méthodes de chaînesInterpolation de chaînesParcourir les chaînesSplit et JoinRécapitulatif - String Weaver4Blocs, Procs & Lambdas
Qu'est-ce qu'un bloc ?do..end vs AccoladesLe mot-clé yieldParamètres de blocProcs et LambdasRécapitulatif - Itérateur personnalisé7Hashes - Partie 2
Hash.new avec des valeurs par défautItérer sur les HashesHashes imbriquésFusion et transformationRécapitulatif - Compteur de fréquence10Projet - Dossiers étudiants
Présentation du projetAjouter un étudiant2Intervalles
Qu'est-ce qu'un intervalle ?Méthodes d'intervalleLes intervalles dans Case / WhenRécapitulatif - Pratique des intervalles5La puissance d'Enumerable
Select et RejectChaîner MapReduce / Injectcount, all?, any?, none?group_by et partitionsort_by, min_by, max_byRécapitulatif - Data PipelineEntraînez-vous par vous-même : Compilateur Ruby en ligne