, - , . , , , , - - ..
def random_words(h, key)
h[key].map { |obj| recurse(h,obj) }.join(' ')
end
def recurse(h, obj)
case obj
when Array
obj.map { |o| recurse(h, o) }
when /\<.+?\>/
recurse(h, h[obj].sample)
else
[obj]
end
end
< >
1
h = { "<start>" =>[["The", "<object>", "<verb>", "tonight."]],
"<object>"=>[["waves"], ["big", "yellow", "flowers"], ["slugs"]],
"<verb>" =>[["sigh", "<adverb>"], ["portend", "like", "<object>"],
["die", "<adverb>"]],
"<adverb>"=>[["warily"], ["grumpily"]]
}
random_words(h, "<start>")
random_words(h, "<start>")
random_words(h, "<start>")
random_words(h, "<object>")
random_words(h, "<verb>")
random_words(h, "<adverb>")
2
h = { "<start>" =>[["The", "<object>", "<verb>", "tonight."]],
"<object>"=>[["waves"], ["big", "<verb>", "yellow", "flowers"], ["slugs"]],
"<verb>" =>[["sigh", "<adverb>"], ["portend", "like", "<object>"],
["die", "<start>", "<adverb>"]],
"<adverb>"=>[["warily", "<object>"], ["grumpily"]]
}
random_words(h, "<start>")
random_words(h, "<start>")
3
h = { "<g1>"=>[["It", "<g2>", "<g3>", "..."]],
"<g2>"=>[["of"], ["waves"], ["was the", "<g3>", "<g4>", "<g3>"],
["wisdom,"], ["foolishness,"]],
"<g3>"=>[["<g4>", "of", "<g2>"], ["it", "<g2>"]],
"<g4>"=>[["best"], ["worst"], ["age"], ["times,"]]
}
random_words(h, "<g1>")
random_words(h, "<g1>")