我正在用 PHP 编写一个应用程序,用户可以在其中输入两组信息并打印出这两组信息的所有可能组合。目标是通过练习不同的问答模式,将其用作学习语言的教学工具。
例如,我们可以练习“你有没有试过……?”这个问题。加上四项活动之一,如蹦极、帆伞运动、跳伞和水肺潜水。还有四种可能的答案:
- 是的,我有,而且我很享受。
- 是的,我有,但我不喜欢它。
- 不,我没有,但我想试试。
- 不,我没有,我不想尝试。
用户将输入两组数据,然后应用程序将打印包含所有可能的问题和答案组合的卡片。例如,卡片 1 如下所示:
- 跳伞:是的,我有,而且我很享受。
- 水肺潜水:是的,我有,但我不喜欢。
- 滑翔伞:不,我没有,但我想试试。
- 蹦极:不,我没有,我不想尝试。
下一张卡片可能如下所示:
- 跳伞:是的,我有,但我不喜欢。
- 水肺潜水:不,我没有,但我想试试。
- 滑翔伞:不,我没有,我不想尝试。
- 蹦极:是的,我有,我很喜欢。
如您所见,有许多不同的可能组合。这个想法是两个列表的长度相同,以允许打印出所有的可能性。同样重要的是,任何一张卡片上的问题或答案都不能重复使用一次,并且两张卡片可以相同。解决此问题的最佳方法是什么?实际的输入和输出不是问题——我以前做过类似的事情。我只需要算法来产生组合。
编辑:我想我真正想要的是让每张卡片的活动顺序相同,但有所有可能的答案组合。所以我真正需要的是能够生成以下一组索引,以便从 answers 数组中获取数据。所以我真的想要更像这样的东西:
- 0,1,2,3
- 0,1,3,2
- 0,2,1,3
- 0,2,3,1
- 0,3,1,2
- 0,3,2,1
- 1,0,2,3
- 1,0,3,2
- 1,2,0,3
- 1,2,3,0
...依此类推,直到产生所有可能的组合。