私はここで書面による試験を受けています。分割と結合を使用するRubyキー
アナグラムである単語のグループを表示するプログラムを作成します。 アナグラムは、正確な文字が同じであるが、異なる順序の の単語です。あなたの出力は次のようになります。
["demo", "dome", "mode"]
["neon", "none"]
(など)
をそして、ここで、このためのソリューションです:
words = ['demo', 'none', 'tied', 'evil', 'dome', 'mode', 'live',
'fowl', 'veil', 'wolf', 'diet', 'vile', 'edit', 'tide',
'flow', 'neon']
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
私はRubyコードソリューションを理解しようとしてきたが、それを容易に把握することはできません。私の質問の1つは、キーがない場合、または要素が含まれていない場合、どのようにしてresult
ハッシュをテストすることができるかです。別のものはどのようにしていますか? join
と。 sort
はこのコードで動作します。
私は本当にそれがすべての答えをどのように行くのか混乱しています。誰かが私のようにダミーである初心者の言葉で、このコードをラインごとに説明することができますか?
@GaganGamiの良い説明に加えて:もしあなたが 'has_key? 'を使わなくても、キーが存在しなければ' result [key] 'という式は有効です。デフォルトでは、欠落しているキーに対しては単に 'nil'を返します。ただし、ハッシュが構築されたときに、異なるデフォルト値を要求することができます。 – user1934428
あなたが答えを見つけたら、あなたが一番好きなものを選択してください。 –