【发布时间】:2017-02-13 15:31:33
【问题描述】:
我们这里有一个单词数组:
words = ['demo', 'none', 'tied', 'evil', 'dome', 'mode', 'live',
'fowl', 'veil', 'wolf', 'diet', 'vile', 'edit', 'tide',
'flow', 'neon']
我的老师编写了一个程序,可以打印出一组单词,这些单词是字谜。字谜是具有相同字母但顺序不同的单词。输出应如下所示:
["demo", "dome", "mode"]
["neon", "none"]
(etc)
这是我的老师向我们展示的解决方案:
result = {}
words.each do |word|
key = word.split('').sort.join
if result.has_key?(key)
result[key].push(word)
else
result[key] = [word]
end
end
result.each do |k, v|
puts "------"
p v
end
我有点困惑这个程序是如何工作的,比如这个部分是什么时候设置的 result[key].push(word) 和它说的部分 result[key] = [word] 我知道这可能是一个问题,但那里的任何人都可以解释解决方案用外行的话或像我这样的傻瓜会理解的方式逐行。
PS。在这里对不起新手。
【问题讨论】:
-
惹恼你的老师!
result = words.group_by{|word| word.chars.sort.join}