我正在寻找一个重构布尔表达式的工具.我有像这样的表情
a1 => (b1 <=> c or d) AND
a2 => (b2 <=> c or d) AND
a2 => (b2 <=> c or d)
Run Code Online (Sandbox Code Playgroud)
该工具应该能够简化表达式,例如在上面的例子中提取子表达式"c或d".是否有免费的计算机代数系统可以做到这一点?
目前我想手动重构表达式,用一点haskell quickcheck脚本证明等价.
我有以下数据库表,其中包含有关人员,疾病和药物的信息:
PERSON_T DISEASE_T DRUG_T
========= ========== ========
PERSON_ID DISEASE_ID DRUG_ID
GENDER PERSON_ID PERSON_ID
NAME DISEASE_START_DATE DRUG_START_DATE
DISEASE_END_DATE DRUG_END_DATE
Run Code Online (Sandbox Code Playgroud)
从这些表格中,我得到了一些关于哪些人服用哪种药物和哪些疾病的统计数据.从中我可以弄清楚哪些模式对我来说是有趣的深入研究.例如,下面是我可能为疾病52找到的布尔模式的简化示例:
( (Drug 234 = false AND Drug 474 = true AND Drug 26 = false) OR
(Drug 395 = false AND Drug 791 = false AND Drug 371 = true) )
Run Code Online (Sandbox Code Playgroud)
编辑: 这是另一个例子:
( (Drug 234 = true AND Drug 474 = true AND Drug 26 = false) OR
(Drug 395 = false AND Drug 791 = false AND Drug 371 …Run Code Online (Sandbox Code Playgroud) 可能重复:
JavaScript的数学是否被破坏?
为什么在某些编程语言中,title中的表达式求值为true?我在php,ruby和python中尝试过它.
以下问题来自Vazirani等人的“动态编程”一章。等
[6.6]让我们在三个符号a上定义一个乘法运算(×);b; c根据下表:

因此,a×a = b,a×b = b等。
找到一种有效的算法,该算法检查这些符号的字符串(如bbbbac),并确定是否可以以使结果表达式的值为a的方式对字符串加上括号。例如,在输入bbbbac上,您的算法应返回yes,因为((b(bb))(ba))c = a。
这是我的方法:将其映射到此处计算布尔括号数量的问题。在该问题中,将为您提供以下形式的布尔表达式
T 或 F 和 T xor T
并且您需要找到多种方法将此方法加括号,以使其评估为true。
我们可以将或,和,xor视为遵循某些规则的运算符(T xor F = T等),并对采用值T或F的操作数进行操作。对于我们的原始问题,我们可以将a,b,c视为操作数由给定表定义的乘法(x)提供规则。
上面的方法有意义吗?还是有一个更简单的方法?
algorithm dynamic-programming boolean-expression parentheses
我有一个表达,假设,
a = 1 && (b = 1 || b != 0 ) && (c >= 35 || d != 5) && (c >= 38 || d = 6)
Run Code Online (Sandbox Code Playgroud)
我希望它减少到,
a = 1 && b != 0 && (c >= 38 || d = 6)
Run Code Online (Sandbox Code Playgroud)
有没有人有什么建议?指向任何算法的指针?
Nota Bene:我相信Karnaugh Map或Quine-McCluskey不是一个选择.由于这些方法不处理灰色案例.我的意思是,表达只能减少,就像A或A'或任何东西,或说黑色或白色或缺乏颜色.但是在这里,我有灰色阴影,正如大家们所看到的那样.
解决方案:我已经在Clojure中为此编写了程序.我使用了包含函数值的地图.这非常方便,只是几个组合的一些规则,你很好.谢谢你的有用答案.
language-agnostic boolean-expression constraint-programming reduction boolean-operations
当只将一个向量传递给逻辑和/或运算符时,运算符否定参数:
> x = c(F,T,T)
> `&`(x)
[1] TRUE FALSE FALSE
> `|`(x)
[1] TRUE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)
要使逻辑运算符作为幂等运算,需要传递单个元素向量作为第二个参数:
> `&`(x,T)
[1] FALSE TRUE TRUE
> `|`(x,F)
[1] FALSE TRUE TRUE
Run Code Online (Sandbox Code Playgroud)
当只有一个参数传递时,为什么逻辑运算符会否定它们的参数?
我不想说:
(trsaz != v1) && (trsaz != v2) && ...
Run Code Online (Sandbox Code Playgroud)
我想要的东西:
trsaz != (v1, v4, v7, v11)
Run Code Online (Sandbox Code Playgroud)
这是可能的还是还有别的东西!=.
我正在观看一个java编程视频教程,它提到:
if(null != x){
}
Run Code Online (Sandbox Code Playgroud)
如上所述使用它是一个好习惯吗?
它有什么不同于:
if(x != null){
}
Run Code Online (Sandbox Code Playgroud) 我得到了以下卡诺图,但在计算每个表中的 XOR 表达式时仍然遇到问题。
Table 1
-------
WZ
00 01 11 10
-----------------------
00 | | | | 1 |
-----------------------
01 | 1 | | | |
-----------------------
XY 11 | | | | 1 |
-----------------------
10 | 1 | | | |
-----------------------
Table 2
-------
WZ
00 01 11 10
-----------------------
00 | | 1 | | |
-----------------------
01 | | | 1 | |
-----------------------
XY 11 | | 1 | | |
-----------------------
10 …Run Code Online (Sandbox Code Playgroud) 当我尝试使用逻辑表达式对 Pandas 数据框进行切片时,出现异常。
我的数据具有以下形式:
df
GDP_norm SP500_Index_deflated_norm
Year
1980 2.121190 0.769400
1981 2.176224 0.843933
1982 2.134638 0.700833
1983 2.233525 0.829402
1984 2.395658 0.923654
1985 2.497204 0.922986
1986 2.584896 1.09770
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 38 entries, 1980 to 2017
Data columns (total 2 columns):
GDP_norm 38 non-null float64
SP500_Index_deflated_norm 38 non-null float64
dtypes: float64(2)
memory usage: 912.0 bytes
Run Code Online (Sandbox Code Playgroud)
命令如下:
df[((df['GDP_norm'] >=3.5 & df['GDP_norm'] <= 4.5) & (df['SP500_Index_deflated_norm'] > 3)) | (
(df['GDP_norm'] >= 4.0 & df['GDP_norm'] <= 5.0) & (df['SP500_Index_deflated_norm'] < …Run Code Online (Sandbox Code Playgroud) algorithm ×1
c# ×1
database ×1
if-statement ×1
java ×1
join ×1
karnaugh-map ×1
pandas ×1
parentheses ×1
python ×1
r ×1
reduction ×1
refactoring ×1
slice ×1
sql ×1
xor ×1