条件逻辑动态

时间:2011-03-31 14:40:31

标签: c# algorithm design-patterns

我搜索可重复使用的工具或算法,使我能够动态地将条件逻辑应用于问题。

让我们详细解释一下:

问题1 - 你的年龄是多少?

a) less 18        
b)between 18-25     
c) greater than 25

如果他选择

a) then he go to Question 2 
b) he will goto question 5 
c) he will goto question 7 

所以我说下一个问题取决于当前问题的答案。我不需要为每个问题设置条件。我需要它是动态的。

我希望现在很清楚。是否有任何组件或设计模式或算法实现我所说的

欢迎所有想法。

5 个答案:

答案 0 :(得分:5)

听起来你可能想要一个查找表,有效地将该对(输入问题,答案)映射到下一个要问的问题编号。如果表格中没有条目,也许它应默认为“转到下一个问题”。

您在数据结构中的确切表示方式取决于您用于存储问题的内容。例如,在SQL中,您可以拥有一个包含“输入问题,答案,下一个问题”列的表。在C#中,您可能只有Dictionary<Tuple<int, int>, int>List<AnswerPath> AnswerPath {{1}} {{1}}包含与SQL表相同的三个值。 (更改名称,这很糟糕,但你明白了。)

答案 1 :(得分:4)

考虑将问题构建为图表,其中每个答案都指向一组有序的其他问题。

更好的是,为每个问题提供一系列必须由之前的答案满足的先决条件。例如,对于问题2,先决条件可能是问题1的答案是a或b。

然后在确定下一个问题时,您只需遍历每个问题,直到找到符合其先决条件的下一个问题。

答案 2 :(得分:2)

为每个答案添加一个名为Next Question的属性。

答案 3 :(得分:1)

您可以使用Dictionary<Tuple<Question,Answer>>,Question>,以便问题和答案成为下一个问题的关键。

答案 4 :(得分:1)

听起来像是Chain of Responsibility模式的工作......