【发布时间】:2013-07-27 20:37:26
【问题描述】:
我有一个我认为需要某种递归迭代的场景,但我不确定,而且我不是递归编码方面的专家,所以我是在画一个空白。
这里是场景:
我有一个类似这样的短语:
[He|She] would [like|love|hate] to [Play Golf|Play Tennis|Play Baseball] Today.
我希望 PHP 解析该短语([] 括号内的每个部分代表该单词或短语的可能变体,每种可能性由 | 管道分隔),并生成所有变体,例如,上面将返回:
He would like to Play Golf Today.
He would like to Play Tennis Today.
He would like to Play Baseball Today.
He would love to Play Golf Today.
He would love to Play Tennis Today.
He would love to Play Baseball Today.
He would hate to Play Golf Today.
He would hate to Play Tennis Today.
He would hate to Play Baseball Today.
She would like to Play Golf Today.
She would like to Play Tennis Today.
She would like to Play Baseball Today.
She would love to Play Golf Today.
She would love to Play Tennis Today.
She would love to Play Baseball Today.
She would hate to Play Golf Today.
She would hate to Play Tennis Today.
She would hate to Play Baseball Today.
我正在尝试弄清楚如何编写 PHP 代码来获取输入的短语,并返回所有可能的句子。
【问题讨论】:
-
有限状态机解析短语并生成所有句子?
-
为了我的目的,我想我们可以限制每个 [] 组 10 个可能的项目,并且句子中总共有 10 个“片段”(每个片段可以是一个奇异值,或一个 []团体)。这能回答吗?
-
我认为,每组可以做任意数量的项目
-
您要做的是找到可能输入的笛卡尔积,然后使用简单的
foreach生成您想要的输出是微不足道的。有几种很好的方法可以做到这一点(包括我自己的答案):stackoverflow.com/questions/6311779/…。如果您需要有关如何执行此操作的更多指导,我可以扩展为答案。