【发布时间】:2016-01-21 08:32:13
【问题描述】:
我有一个通过拆分任何给定单词创建的字母数组。我有一个包含所有五个元音的常量数组,我用它来将字母数组中的每个字母分类为辅音或元音。
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"]
我想以某种方式实现两件事:
- 将“letters”数组中具有相同“word_structure”的相邻字母分组。
- 获取这些组并将每个可能的 VCV 组合作为另一个数组返回。 V代表所有相邻元音的分组,C代表所有相邻辅音的分组。
.
groups = ["c", "o", "mp", "a", "r", "e", "d"]
vcv_groups = ["-co", "ompa", "are", "ed-"]
在本例中,第一个 VCV 组以“-”开头,因为没有第一组元音。接下来的两组完全符合模式,最后一组有另一个“-”,因为没有最后的元音来完成模式。
我已经尝试过 Enumerable#chunk、Enumerable#partition 和 Enumerable#slice_before,但它们都让我感到困惑。如果有人了解实现此目的的简单方法,我将非常感谢您的帮助。
【问题讨论】:
-
这看起来像是正则表达式的工作。
-
@CarySwoveland 我已对其进行了编辑以使其更清晰。
标签: arrays ruby enumerable