Rubyで配列の配列を取り込み、ハッシュに変換できる関数を記述しようとしています。これは、文をシミュレートし、任意の単語シーケンスを作成するために使用されます。結果の地図は、現在の文章規則で利用可能な文章のすべての組み合わせを生成するのに役立ちます。Rubyで配列の配列からマップを作成する
これを達成するにはどうすればよいですか?どこから始めたらいいか分からない。
Rubyで配列の配列を取り込み、ハッシュに変換できる関数を記述しようとしています。これは、文をシミュレートし、任意の単語シーケンスを作成するために使用されます。結果の地図は、現在の文章規則で利用可能な文章のすべての組み合わせを生成するのに役立ちます。Rubyで配列の配列からマップを作成する
これを達成するにはどうすればよいですか?どこから始めたらいいか分からない。
これを試してみてください:
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
は結果の配列をハッシュに変換します。
ようこそ。私たちは、コードの要求ではなく、これを解決しようとするあなたの試みを見たいと思います。リンク先のページ「[mcve]」「スタックオーバーフローユーザーの研究努力の程度」(http://meta.stackoverflow.com/q/261592)を含む「[ask]」をお読みください。現在あなたの質問は時期尚早です。試してみてみてください。もう少し試してから、コードの一部について具体的な質問をしてください。 –