标签: boolean-expression

在Haskell中为逻辑表达式生成真值表

第一部分是具有以下类型签名的评估函数:

evaluate :: Logic Expr -> [(Variable, Bool)] -> Bool
Run Code Online (Sandbox Code Playgroud)

这将逻辑表达式和赋值对列表作为输入,并根据提供的布尔赋值返回表达式的值.赋值列表是一个不同的对列表,其中每对包含一个变量及其布尔赋值.也就是说,如果传递给函数表达式A∧B并且赋值A = 1且B = 0,则函数必须返回0(这来自Digital Logic Design,0对应于false,1对应于true).

这是我到目前为止所做的事情:

type Variable =  Char

data LogicExpr = V Variable
                 | Negation  LogicExpr
                 | Conjunction LogicExpr LogicExpr
                 | Disjunction  LogicExpr LogicExpr 
                 | Implication  LogicExpr LogicExpr 


evaluate :: LogicExpr -> [(Variable,Bool)] -> Bool

evaluate (V a) ((x1,x2):xs) | a==x1 = x2
                            | otherwise = (evaluate(V a)xs)

evaluate (Negation a) l | (evaluate a l)==True = False
                        | otherwise = True

evaluate (Conjunction a b) …
Run Code Online (Sandbox Code Playgroud)

logic haskell boolean-logic boolean-expression

3
推荐指数
1
解决办法
4016
查看次数

为什么我必须在三元表达式中对int进行类型转换?

可能重复:
条件运算符无法隐式转换?

我遇到了一种奇怪的情况,想知道我为什么要这样做.我正在使用.NET 3.5.

这有效:

short foo;

if (isValid)
    foo = -1;
else
    foo = getFoo();
Run Code Online (Sandbox Code Playgroud)

这不起作用:

short foo;
foo = isValid ? -1 : getFoo();
Run Code Online (Sandbox Code Playgroud)

我必须打字-1:

short foo;
foo = isValid ? (short)-1 : getFoo();
Run Code Online (Sandbox Code Playgroud)

三元表达式有何不同?它认为-1是一个需要被转换为short的int.但为什么?

c# casting ternary-operator boolean-expression

3
推荐指数
2
解决办法
410
查看次数

如何将布尔表达式转换为cnf文件?

我需要使用sat解算器来检查布尔表达式的可满足性.

我有像这样的复杂布尔表达式

替代文字

是否有任何自动cnf文件转换器,以便我可以直接给坐在求解器?

我读了cnf格式文件..但是如何在.cnf文件中表达这个表达式?当paranthesis里面有一个连词以及如何表达时,我会感到困惑 - >和< - >?请帮我

java boolean-expression conjunctive-normal-form sat-solvers

3
推荐指数
1
解决办法
4667
查看次数

反转布尔表达式

我有一些像这样的代码

var a = returnsABoolean();
var b = returnsABoolean();

if (!a || !b) {

} else {
  doStuff();
}
Run Code Online (Sandbox Code Playgroud)

我如何在if语句中反转测试,以便我可以将其重写为

var a = returnsABoolean();
var b = returnsABoolean();

if (someExpression) {
  doStuff();
}
Run Code Online (Sandbox Code Playgroud)

换句话说,我应该用什么测试替换someExpression以保留现有的行为?

javascript language-agnostic boolean-expression

3
推荐指数
1
解决办法
2097
查看次数

3
推荐指数
1
解决办法
226
查看次数

python中not()的命令有什么问题?

在python中使用not()有什么问题?我试过这个

    In [1]: not(1) + 1
    Out[1]: False
Run Code Online (Sandbox Code Playgroud)

它工作得很好.但在重新调整之后,

    In [2]: 1 + not(1)
    Out[2]: SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

它给出了一个错误.订单如何重要?

python operators boolean-expression

3
推荐指数
1
解决办法
366
查看次数

将"是"或"否"转换为布尔值

我想解析.CSV文件中包含的用户值.我不希望我的用户输入"是"或"否",而是输入"True"或"False".在每种情况下,我想转换为等效的布尔值:$true$false.理想情况下,我想要一个默认值,所以如果有错误拼写"是或"否"我将返回我的默认值:$true$false.

因此,我想知道除了这样做之外是否还有一种巧妙的方法

if(){} else (){}
Run Code Online (Sandbox Code Playgroud)

powershell boolean boolean-expression

3
推荐指数
2
解决办法
2987
查看次数

SonarQube - 布尔逻辑正确性 -

我的方法matches1()上的逻辑表达式有问题.

问题

SonarQube告诉我有一个错误: (expectedGlobalRule == null && actual != null)

SonarQube: 更改此条件,使其不会始终评估为"true".条件不应无条件地评估为"TRUE"或"FALSE"

我本质上是在做这个逻辑,以避免我的"块被执行"上的NPE.

我的代码

matches1()

private boolean matches1(GbRule actual, GbRule expected) {
     if(actual == null && expected == null) {
        return true;
     } else if((expected == null && actual != null) || (expected != null && actual == null)) {
        return false;
     } else {
       //Block to be executed
     }
}
Run Code Online (Sandbox Code Playgroud)

我颠倒了逻辑,看看SonarQube会告诉我什么,他并没有抱怨它. matches2()

private boolean matches2(GbRule actual, GbRule expected) {
      if(actual == null && expected == …
Run Code Online (Sandbox Code Playgroud)

java boolean-expression sonarqube

3
推荐指数
1
解决办法
1676
查看次数

在Javascript中,A ==!B始终与A!= B相同

重构一些旧代码,我发现了以下内容:

someVar == !otherVar
Run Code Online (Sandbox Code Playgroud)

这看起来并不清晰,我认为可以写成:

someVar != otherVar
Run Code Online (Sandbox Code Playgroud)

这样做似乎是合乎逻辑的.但是,由于这是Javascript,我担心附带问题,所以这真的没问题吗?

javascript logic boolean-logic boolean-expression

3
推荐指数
2
解决办法
89
查看次数

布尔文字的Python 3.6.2相等比较

作为任务的一部分,我们被要求创建一个非常基本/基本的程序,要求用户输入(他们是否需要咖啡或茶,大小,是否需要任何调味料),然后输出特定成本饮料,包括其名称和订购的食物,以及费用。我编写的代码非常完美;但是,我唯一的问题更多是我自己的理解。我们对客户名称的说明如下:“客户名称–仅由大小写字母组成的字符串;不能包含空格(您可以假定只包含字母)。”

因此我的代码如下:

customerName = str(input('Please enter your name: '))
if customerName.isalpha() == False:
    print('%s is an invalid name, please try again!' % customerName)
else:
Run Code Online (Sandbox Code Playgroud)

然后我就从那里继续-但是,PyCharm告诉我“表达式可以简化-此检查可以检测到使用布尔文字的相等比较”,

if customerName.isalpha() == False:
Run Code Online (Sandbox Code Playgroud)

声明。简化此过程的最佳方法是什么?

python equality boolean-expression python-3.x

3
推荐指数
1
解决办法
4662
查看次数