生成真值表

时间:2016-01-31 23:20:51

标签: haskell

如果我有一些值A B C,则可以生成所有可能的真值的列表: 输入是[" X"," Y"," Z"] 例如该列表包含8个列表(表格行)

babe-register

有关于如何做到这一点的任何提示吗?

我想为任意数量的变量生成一个真值表。

2 个答案:

答案 0 :(得分:3)

你需要的不是真值表而是笛卡尔积。 您可以使用列表推导获得所需内容:[(x,y,z) | x <- [True, False], y <- [True,False], z <- [True,False]]

如果要保留变量名称,可以使用元组:[(x,y,z) | x <- [("X", True), ("X", False)], y <- [("Y", True), ("Y", False)], z <- [("Z", True),("Z", False)]]

答案 1 :(得分:2)

让递归与你同在。如果您有n变量的真值表,则可以通过将n+1附加到{{1}的表中,为X个变量(添加变量(X, True))获取一个真值表}}变量,然后附加n

(X, False)