J'ai un tableau de lettres créé en divisant un mot donné. J'ai un tableau constant des cinq voyelles, et j'utilise cela pour classer chaque lettre dans le tableau de lettres comme une consonne ou une voyelle.Comment regrouper des éléments dans un tableau ruby en fonction des caractéristiques de chaque élément?
VOWELS = ["a","e","i","o","u"]
letters = "compared".split("")
# => ["c", "o", "m", "p", "a", "r", "e", "d"]
word_structure = letters.map { |letter| VOWELS.include?(letter) ? "v" : "c" }
# => ["c", "v", "c", "c", "v", "c", "v", "c"]
Je veux en quelque sorte réaliser deux choses:
- Groupe lettres adjacentes dans le tableau « lettres » qui ont le même « word_structure ».
- Reprenez ces groupes et renvoyez chaque combinaison de VCV possible sous la forme d'un autre tableau. V représente un groupement de toutes les voyelles adjacentes, et C représente un groupement de toutes les consonnes adjacentes.
. Dans cet exemple, le premier groupe VCV commence par un "-" car il n'y a pas de premier regroupement de voyelles. Les deux groupes suivants correspondent parfaitement au motif, et le dernier a un autre "-" parce qu'il n'y avait pas de voyelle finale pour compléter le motif.
J'ai expérimenté avec Enumerable # chunk, Enumerable # partition et Enumerable # slice_before, mais ils sont tout simplement confus pour moi. Si quelqu'un comprend un moyen simple d'y parvenir, j'apprécierais vraiment l'aide.
Cela ressemble à un emploi pour les expressions régulières. –
@CarySwoveland J'ai modifié pour le rendre plus clair. – elersong