2016-10-28 24 views
0

Rubyで配列の配列を取り込み、ハッシュに変換できる関数を記述しようとしています。これは、文をシミュレートし、任意の単語シーケンスを作成するために使用されます。結果の地図は、現在の文章規則で利用可能な文章のすべての組み合わせを生成するのに役立ちます。Rubyで配列の配列からマップを作成する

これを達成するにはどうすればよいですか?どこから始めたらいいか分からない。

+0

ようこそ。私たちは、コードの要求ではなく、これを解決しようとするあなたの試みを見たいと思います。リンク先のページ「[mcve]」「スタックオーバーフローユーザーの研究努力の程度」(http://meta.stackoverflow.com/q/261592)を含む「[ask]」をお読みください。現在あなたの質問は時期尚早です。試してみてみてください。もう少し試してから、コードの一部について具体的な質問をしてください。 –

答えて

2

これを試してみてください:

arr = [ ["<start>", "The <object> <verb> tonight."], 
     ["<object>", "waves", "big yellow  flowers", "slugs"], 
     ["<verb>", "sigh <adverb>", "portend like <object>", "die <adverb>"], 
     ["<adverb>", "warily", "grumpily"] ] 

arr.map { |ar| [ar.shift, ar.map { |str| str.split }] }.to_h 
#=> 
#{ "<start>" => [["The", "<object>", "<verb>", "tonight."]], 
# "<object>" => [["waves"], ["big", "yellow", "flowers"], ["slugs"]], 
# "<verb>" => [["sigh", "<adverb>"], ["portend", "like", "<object>"], ["die", "<adverb>"]], 
# "<adverb>" => [["warily"], ["grumpily"]] } 

ar.shiftは、各サブアレイの最初の要素を取ります。 ar.mapで使用されるブロックは、残りの要素を(空白で)配列に分割します。最後にto_hは結果の配列をハッシュに変換します。

+0

ありがとう、その作業!あなたは何が起こっているのか、私に少し説明を与えることができますか? – FlameDra

+0

@FlameDra確かに、私は私の答えを更新します:) –

+0

@ sagarpandya82あなたの答えを更新しました。それは私にとってこのように優れています。あなたが好きかどうかを確認してください;) – Ursus

関連する問題