通过布尔表达式求解变量值组合

时间:2014-12-05 05:13:08

标签: c# boolean

我在文件中有一些布尔表达式,如下所述。

 ((a&&b)|(c&&a)|(r&&s) && !(c)&& (f>=5)) = false
 ((e&&f) !(n)&& p) = false

等等。

我的任务是找到表达式中使用的变量的所有可能的布尔组合,这将产生表达式右侧提到的结果。

我是c#的初学者。请指导我实现这一目标。

1 个答案:

答案 0 :(得分:0)

您可以为有限数量的输入执行此操作,并且知道输入值如下:

public void CalculateExpression(Expression<Func<bool, bool, int, bool>> expr){
    var compiledExpr = expr.Compile();

    for(var a = false; !a; !a)
      for(var b = false; !b; !b)
        for(var c = 0; c < 100; c)
          if(compiledExpr.Invoke(a,b,c))
            //Print or do whatever you want with that parameter combination
}

//Call with any of your login sentences
CalculateExpression((a,b,c) => (a|b)&&(c>5) == false);