В настоящее время я работаю над проектом, где, используя правила свободной грамматики контекста, я буду генерировать случайные предложения. Прямо сейчас, я работаю над созданием функции, которая будет принимать хеш, и пересекаю ее, выбирая правильные постановки, чтобы создать предложение и вернуть его как строку.Создание строки с карты
Например, если хэш следующего формата:
{
"<start>"=>[["The", "<object>", "<verb>", "tonight."]],
"<object>"=>[["waves"], ["big", "yellow", "flowers"], ["slugs"]],
"<verb>"=>[["sigh", "<adverb>"], ["portend", "like", "<object>"], ["die", "<adverb>"]],
"<adverb>"=>[["warily"], ["grumpily"]]
}
я должен быть способен генерировать случайное предложение, например: «Волны умирают ворчливо сегодня».
Вот общий процесс создания этого предложения:
- Он всегда будет начать генерировать на
<start>
тег и продолжить заполнение необходимых производств. - Он проходит через
<start>
и добавляет «The», а затем попадает «<object>
», поэтому он переходит в ключ<object>
и захватывает случайное значение оттуда, например["waves"]
. - После этого он возвращается и продолжает перемещаться и натыкается на «
<verb>
», поэтому он переходит в ключ<verb>
и захватывает случайное значение оттуда, например["die", "<adverb>"]
. - Поскольку он столкнулся с «
<adverb>
», он должен войти в ключ<adverb>
и выбрать случайное значение, например [«сердито»]. - Затем он возвращается к пересечению и натыкается на него и добавляет «сегодня». Он достиг конца
<start>
, чтобы он мог выводить предложение сейчас.
Как написать метод случайного генерирования предложений?
Ваш вопрос преждевременно. Вы должны попробовать, тогда, когда вы не можете понять это, покажите нам, как вы пытались решить «# TODO: ваша реализация здесь» с подробным вопросом о конкретной проблеме, с которой вы столкнулись, вместо того, чтобы спросить нас, как написать код. «[Сколько ожиданий от пользователей Stack Overflow?] (Http://meta.stackoverflow.com/q/261592)« –
Я не прошу решения, я изучаю рубин в течение 2 недель и Я не знаю, как это сделать в рубине. Если бы это было сделано на Java, у меня не было бы столько проблем с записью этой функции. –