所以,这是前言:
我是Ruby的初学者。我正在研究一个字谜查找脚本(找到文本文件中的所有字谜)。本质是:我创建一个字典,其中键是字代码,值是一个数组,其中包含引用此代码的单词。就像那样:{"abdeis"=>["abides", "biased"] ,"achr"=>["char"], ... }
。最后,我只打印出长度为> 1的值。到目前为止一切都很好。
这是交易:我想修改输出,以便省略这样的情况:["Wood", "wood", "WooD"]
- 所有情况都不同。但是这种情况应该保留:["Doom", "DooM", "mood"]
。
我目前的一段代码:
def print_anagram(anagram_dict)
anagram_list = anagram_dict.values
anagram_list.each { |i|
if i.length > 1
print i.join("\t")
print "\n"
else
next
end
}
end
anagram_dict是上面提到的字典。
我应该做些什么来将这些案件扔掉?我想到的东西似乎对我来说太笨重了。提前谢谢!
答案 0 :(得分:0)
这样做你想要的吗?
def print_anagram(anagram_dict)
anagram_list = anagram_dict.values.uniq{|word| word.downcase}
# rest of your code
答案 1 :(得分:0)
def print_anagram(anagram_dict)
anagram_list = anagram_dict.values
anagram_list.each do |i|
next if i.map(&:downcase).uniq.length == 1
if i.length > 1
print i.join("\t")
print "\n"
else
next
end
end
end
这是做什么的:
使所有字符串小写
只获取数组中的唯一元素
如果您只有一个唯一元素,则所有元素都相同
map(&:downcase)
是一种较短的做法:map { |element| element.downcase }