标签: boolean-logic

我可以简化使用逻辑否定运算符的条件语句吗?

很抱歉,如果这是一个"逻辑运营商101"的问题.我一直盯着我的屏幕看了15分钟试图绕着它绕过它,但我被卡住了.

是否有更简洁/更优雅的方式来表达以下内容(这是JavaScript语法,但它不是一个与语言相关的问题):

if (!something && !something_else) {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

基于一些实验,这似乎不是逻辑上的等价物:

if (!(something && something_else) {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

此外,任何人都可以推荐一个在线资源,以进一步研究这些问题吗?我假设这类事物在计算机科学课程中被抽象化了,这是我编程知识中的一个重要缺口,我真的很想填写.谢谢!

logic conditional boolean-logic boolean logical-operators

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

什么是编码嵌套二进制分支逻辑的可读方式

我有一些看起来像的逻辑

if(a){
 if(b){
  if(c){
    //do something
  }else{
    //do something
  }    
 }else{
  if(c){
    //do something
  }else{
    //do something
  }    
 }else{
 if(b){
  if(c){
    //do something
  }else{
    //do something
  }    
 }else{
  if(c){
    //do something
  }else{
    //do something
  }    
}
Run Code Online (Sandbox Code Playgroud)

将此实现为可读逻辑的最佳方法是什么?我不想做一些大的OOP手术让它可读,因为做的事情只是一个衬垫.感谢C/C++中的解决方案

c c++ boolean-logic

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

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

检查至少有十分之二的布尔是真的

如果三个布尔值中至少有两个是真的,这是最容易找到的方法:

BOOL a, b, c;
-(BOOL)checkAtLeastTwo
{
  return a && (b || c) || (b && c); 
}
Run Code Online (Sandbox Code Playgroud)

如果有10个布尔并且其中至少有两个需要是真的,那么最佳解决方案是什么?提前致谢.

language-agnostic logic boolean-logic boolean-operations

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

从数字中删除位

我有点旗帜,其中:

A = 1 (0001)
B = 2 (0010)
C = 4 (0100)
D = 8 (1000)
Run Code Online (Sandbox Code Playgroud)

我想在我的旗帜中设置A和C位:flag = A | C

现在我的旗帜是5(0101).

我需要从flag中删除C位.我怎样才能做到这一点?

math boolean-logic

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

是否有一种不太复杂的比较文件版本的方法?

我编写了一个函数来比较客户端当前拥有的文件版本和服务器上文件的最新版本.客户端将"quad"(Major.Minor.Build.Private)版本号作为字符串传递给服务器,然后服务器使用FileVersionInfo:

// clientFileVersion will be in "quad" format, a la "3.1.4.1"
private bool ServerFileIsNewer(string clientFileVersion, FileVersionInfo serverFile)
{
    // Don't say I never learned nuthin' from Steve McConnell
    const int MAJOR_INDEX = 0;
    const int MINOR_INDEX = 1;
    const int BUILD_INDEX = 2;
    const int PRIVATE_INDEX = 3;

    string[] versionStrArray = clientFileVersion.Split('.');
    int FileMajorPartClient;
    Int32.TryParse(versionStrArray[MAJOR_INDEX], out FileMajorPartClient);
    int FileMinorPartClient;
    Int32.TryParse(versionStrArray[MINOR_INDEX], out FileMinorPartClient);
    int FileBuildPartClient;
    Int32.TryParse(versionStrArray[BUILD_INDEX], out FileBuildPartClient);
    int FilePrivatePartClient;
    Int32.TryParse(versionStrArray[PRIVATE_INDEX], out FilePrivatePartClient);

    int FileMajorPartServer = serverFile.FileMajorPart;
    int FileMinorPartServer = serverFile.FileMinorPart; …
Run Code Online (Sandbox Code Playgroud)

c# logic boolean-logic boolean boolean-operations

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

用仿函数在haskell中写XOR

我是相对较新的haskell,我刚刚学习了Applicative Functors,我只使用仿函数和布尔函数为xor创建了这个代码.我想知道你们是否可以用仿函数提出一个更短的解决方案(我确信存在).

xor :: Bool->Bool->Bool
xor=(<$>) (not<$>) ((<*>).((((not<$>)<$>(&&))<$>)<$>((not<$>)<$>(&&)))<*>(||))
Run Code Online (Sandbox Code Playgroud)

我知道这可能不是很好的做法; 对我来说这更像是一个脑筋急转弯.

PS我希望这是允许的

haskell boolean-logic functor applicative

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

在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
查看次数

嵌套"和/或"if语句

我正在处理创建列表的代码,然后应用"或"和"和"条件来执行进一步操作:

a= ["john", "carlos", "22", "70"]

if (("qjohn" or "carlos") in a) and (("272" or "70") in a):
    print "true"
else:
    print "not true"
Run Code Online (Sandbox Code Playgroud)

输出:

not true
Run Code Online (Sandbox Code Playgroud)

当我这样做:

a= ["john", "carlos", "22", "70"]

if ("qjohn" or "cdarlos" in a) and ("272" or "d70" in a):
    print "true"
else:
    print "not true"
Run Code Online (Sandbox Code Playgroud)

输出是 "true"

我没有得到的**carlos and 70**应该是真实的,但它打印"不真实".这个错误的原因是什么?谢谢

python boolean-logic list nested-if

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

为什么在Javascript中的假值之后执行三元表达式?

据我所知,在Javascript中伪造的值之后不会执行表达式。例如下面的语句:

const result = undefined && 5;
console.log(result);
Run Code Online (Sandbox Code Playgroud)

result 将是不确定的。

然而:

const result = false && false ? 'T' : 'F';
console.log(result);
Run Code Online (Sandbox Code Playgroud)

result将等于F。为什么仍然执行三元表达式?

javascript boolean-logic ternary-operator

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