【发布时间】:2013-12-28 03:43:04
【问题描述】:
我正在尝试构建一个简单的算法来检测数组中的两个或多个字符串是否与更大数组中的给定单词列表唯一匹配,例如 g 中的字符只有一次出现,并且元音aeiou的无限次出现。
较短数组中的辅音应保持与目标中相同的顺序。
我想返回一个数组数组,其中包含与它们自己数组中每个单独字符串的所有匹配项:
例子:
target = ["bs", 'tr', 'gl',...] #etc...(Imagine if there were n items in the array, an each array item need not be only 2-chars long.
target2 = ['bs', 'tr', 'bbss']
target3 = ['glw', 'gl', 'bbss']
target4 = ['bstrgl', 'gl', 'bss']
arr = ['base', 'true', 'glow', 'bees', 'bass', 'sabb', 'babss', 'glee', 'basatragl']
q = []
for x in 0..s.length
word = arr.collect{ |z| [z, z.gsub(/[aeiou]/,"")] }.select{ |z| z[1] == s[x]}.collect{|z| z[0]}
q << word
end
p q
编辑: 对于目标,预期的输出是:
#=> [['base', 'true', 'glee'], ['bees', 'true', 'glee']]
# for this example, this is the total amount of answers possible given array arr.
# all others either have more than 1 b or s, or contain other consonants.
对于目标 2: ['base', 'true', 'babss'], ['bees', 'true', 'babss'] 目标3: ['发光','欢乐','babss'] 目标4: ['basatragl', 'glee', 'bass']
我得到了这个输出(对于目标),但我不确定如何让输出更漂亮地排序:
[[\"base"\, \"bees"\], [\"true"\,], [\"glee"\]]
我不确定我哪里出错了。如何将输出放入正确的存储桶中,并摆脱 \'s?
【问题讨论】:
-
最近几周,这个问题或变种已经多次出现在 SO 上,例如here。你搜索过吗?
-
看起来像一个家庭作业,尽管这似乎是一个不同的变体
-
我在阅读您的更改后修改了我的答案。你会看到我也修改了我对问题的陈述,因为我现在明白了。如果这是正确的,我建议您编辑您的问题以合并它。就目前而言,您的问题仍然不清楚,如果您不解决它可能会被删除。 (无论如何它可能会被删除,因为您之前没有修复它。)您收到的答案不仅仅是为了您的利益;他们还可以帮助将来阅读您的问题的其他人。你应该感谢他们,感谢那些试图帮助你的人,写出清晰、简洁和完整的问题。
-
我同意,对我来说很清楚,让我知道你还不清楚什么?