标签: boolean-logic

动态评估Python中的简单布尔逻辑

我有一些动态生成的布尔逻辑表达式,如:

  • (A或B)和(C或D)
  • A或(A和B)
  • 一个
  • empty - 评估为True

占位符被布尔代替.我是不是该,

  1. 转换这些信息像Python表达式True or (True or False)eval它?
  2. 创建一个二叉树,其中一个节点是一个boolConjunction/ Disjunction对象并递归评估它?
  3. 将其转换为嵌套的S表达式并使用Lisp解析器?
  4. 别的什么?

建议欢迎.

python tree logic boolean-logic boolean

15
推荐指数
4
解决办法
1万
查看次数

Prolog SAT解算器

我正在尝试构建一个简单的Prolog SAT求解器.我的想法是用户应该使用Prolog列表输入要在CNF(Conjuctive Normal Form)中解决的布尔公式,例如(A或B)和(B或C)应该表示为sat([[A,B]] ,[B,C]])和Prolog试图找到A,B,C的值.

我的以下代码不起作用,我不明白为什么.在这一行跟踪调用:(7)sat([[true,true]])? 我期待start_solve_clause([_ G609,_G612]]).

免责声明:对不起几天前我甚至不知道Prolog或SAT问题的糟糕代码.

PS:欢迎提出解决SAT问题的建议.

跟踪

sat([[X, Y, Z], [X, Y]]).
Call: (6) sat([[_G609, _G612, _G615], [_G609, _G612]]) ? creep
Call: (7) start_solve_clause([_G609, _G612, _G615]) ? creep
Call: (8) solve_clause([_G615], _G726) ? creep
Call: (9) or(_G725, _G615, true) ? creep
Exit: (9) or(true, true, true) ? creep
Exit: (8) solve_clause([true], true) ? creep
Call: (8) or(_G609, _G612, true) ? creep
Exit: (8) or(true, true, true) ? creep
Exit: (7) start_solve_clause([true, …
Run Code Online (Sandbox Code Playgroud)

boolean-logic prolog clpb

15
推荐指数
2
解决办法
4989
查看次数

我应该使用"&&"还是"和"?

我正在使用C++ 11,两者都在没有任何警告的情况下进行编译,一个是最好的方法吗?

if(a && b)
Run Code Online (Sandbox Code Playgroud)

要么

if(a and b)
Run Code Online (Sandbox Code Playgroud)

c++ boolean-logic language-lawyer

15
推荐指数
3
解决办法
1400
查看次数

PHP中的布尔赋值运算符

我发现自己经常这样做:

$foo = true;
$foo = $foo && false; // bool(false)
Run Code Online (Sandbox Code Playgroud)

使用按位运算符,您可以使用&=|=简写:

$foo = 1;
$foo &= 0; // int(0)
Run Code Online (Sandbox Code Playgroud)

鉴于按位运算1并且0在功能上等效于true和的布尔运算false,我们可以依赖于类型转换并执行以下操作:

$foo = true;
$foo &= false; // int(0)
$foo = (bool)$foo; // bool(false)
Run Code Online (Sandbox Code Playgroud)

...但是这很丑陋并且违背了使用速记赋值语法的目的,因为我们必须使用另一个语句来将类型返回到布尔值.

我真正想做的是这样的事情:

$foo = true;
$foo &&= false; // bool(false)
Run Code Online (Sandbox Code Playgroud)

......但&&=||=无效的运营商,很明显.所以,我的问题是 - 是否有一些其他含糖的语法或者可能是一个不起眼的核心功能可以作为替身?如果变量尽可能短$foo,那么使用$foo = $foo && false语法并不是什么大问题,但是具有多个维度的数组元素和/或对象方法调用会使语法非常冗长.

php syntax boolean-logic syntactic-sugar

15
推荐指数
2
解决办法
5620
查看次数

为什么R中"one"<2等于FALSE?

我正在阅读Hadley Wickham关于强制的高级R部分,我无法理解这种比较的结果:

"one" < 2
# [1] FALSE
Run Code Online (Sandbox Code Playgroud)

我假设R将2强制转换为一个字符,但我不明白为什么R返回FALSE而不是返回错误.这对我来说尤其令人费解

-1 < "one"
# TRUE
Run Code Online (Sandbox Code Playgroud)

所以我的问题有两个方面:首先,为什么这个答案,第二,有没有办法看到R如何在这些例子中转换逻辑向量中的各个元素?

comparison boolean-logic boolean r coercion

15
推荐指数
2
解决办法
982
查看次数

在 if 语句中组合多个条件

当您希望一组或另一组 2 个条件为真时,您如何将 4 个条件链接在一起?

更准确地说,我想做:

如果用户已登录且操作系统版本为 Windows 10

或者

用户已登录且 LogonUI 进程未运行

不要理会这些命令,它们在隔离时都可以正常工作,我的问题是将它们链接在一起。

例如我有:

if (
        (Get-WmiObject –ComputerName $poste –Class Win32_ComputerSystem).UserName`
        -and`
        (Get-WmiObject -Computer $poste -Class Win32_OperatingSystem).Version -like "*10*"
    )
    { echo do X }
Run Code Online (Sandbox Code Playgroud)

这是工作正常。我想在同一个if条件块中添加其他条件。我试过这个,但它不起作用:

if (
        (Get-WmiObject –ComputerName $poste –Class Win32_ComputerSystem).UserName`
        -and`
        (Get-WmiObject -Computer $poste -Class Win32_OperatingSystem).Version -like "*10*"`
        -or`
        (Get-WmiObject –ComputerName $poste –Class Win32_ComputerSystem).UserName`
        -and -not`
        (Get-Process -ErrorAction SilentlyContinue -ComputerName $poste -name logonui)
    )
    { echo do X }
Run Code Online (Sandbox Code Playgroud)

你如何像这样链接多个“块”?我知道我可以做两个不同的 IF,我让它工作了,但是没有办法将它全部链接到一个 IF 中吗?(IF 包含很多代码,我不想用两个 …

powershell boolean-logic if-statement

15
推荐指数
1
解决办法
7万
查看次数

如何在Javascript中比较字符串和布尔值?

"false"从服务器获得了Json .我回答,bool但它是Json所以它在浏览器类型String而不是bool.

因此,如果我(!data)每次想要检查时都会运行,"false" == false那么它们就无法运行.

所以,我怎么能解析boolStringJavaScript中呢?

"true" == true"false" == false.然后代码(!data)可以检查它是什么[ truefalse]

javascript string comparison boolean-logic boolean

14
推荐指数
3
解决办法
4万
查看次数

如果所有列值都为true,则返回true

在PostgreSQL中有一种更快的方法来基本上在几行中执行if吗?

说我有一张桌子

ticket | row | archived
1      | 1   | true
1      | 2   | true
1      | 3   | true
2      | 1   | false
2      | 2   | true
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以在ticket =的列下面做一个if语句?因此,ticket = 1的地方是真的

true && true && true = true
Run Code Online (Sandbox Code Playgroud)

并且ticket = 2将是假的,因为

false && true = false
Run Code Online (Sandbox Code Playgroud)

或者我应该坚持下去

SELECT ( (SELECT COUNT(*) FROM table WHERE ticket = 1)
       = (SELECT COUNT(*) FROM table WHERE ticket = 1 AND archived = true) )
Run Code Online (Sandbox Code Playgroud)

sql postgresql boolean-logic exists aggregate-functions

14
推荐指数
2
解决办法
1万
查看次数

在Javascript中将rgba值转换为一个整数

我已经可以将32位整数转换为它们的rgba值,如下所示:

pixelData[i] = {
        red: pixelValue >> 24 & 0xFF,
        green: pixelValue >> 16 & 0xFF,
        blue: pixelValue >> 8 & 0xFF,
        alpha: pixelValue & 0xFF
    };
Run Code Online (Sandbox Code Playgroud)

但我真的不知道如何扭转它.

javascript boolean-logic bit-manipulation

14
推荐指数
1
解决办法
8704
查看次数

ruby是否有布尔值的数组求和方法?

Ruby允许你这样做

[5,5,5].sum
=> 15
Run Code Online (Sandbox Code Playgroud)

有没有什么可以在数组上做布尔算术

[true, true, true].sum
=> true
[true, false, true].sum
=> false
Run Code Online (Sandbox Code Playgroud)

ruby boolean-logic

14
推荐指数
1
解决办法
5412
查看次数