如何将普通英语转换为合成逻辑条件?

时间:2011-04-02 12:27:33

标签: java logic

我有7个布尔变量name

A1
A2
A3

B1
B2
B3

C

现在,如果

,条件应该评估为真
  • A中的至少一个和B中的至少一个是真的

  • C且A和B中的至少一个为真

我不确切地知道如何从中得出一个简短的条件:

任何提示如何开始?

7 个答案:

答案 0 :(得分:3)

你没有指定一个上下文,所以我按照你的标签去做,假设你是用Java编写的。下面是您将用于评估您提出的2个条件测试的代码。

对于“A中的至少一个和B中的一个”:

bool condition1 = (A1 || A2 || A3) && (B1 || B2 || B3)

对于“C并且A和B中的至少一个是真的”(读作为A& B变量被测试为一个):

bool condition2 = C && (A1 || A2 || A3 || B1 || B2 || B3)

答案 1 :(得分:1)

“至少有一个”也可以写成“不是”,所以:

!(!B1 && !B2 && !B3)

这也可以写成(应用De Morgan's Rule):

B1 || B2 || B3

您指定的其他内容可以或多或少地直接翻译,并适当使用&&||和括号来解决歧义。

答案 2 :(得分:1)

  1. (A1 || A2 || A3) && (B1 || B2 || B3)
  2. ((A1 || A2 || A3) && (B1 || B2 || B3)) && C

答案 3 :(得分:1)

至少有一个意味着你必须要他们

所以你的第一个条件是(A1 || A2 || A3)&& (B1 || B2 || B3)

答案 4 :(得分:1)

  • “至少有一个”= OR = ||

  • “和”= AND = &&

因此这两部分是:

  • (A1 || A2 || A3) && (B1 || B2 || B3)

  • C && (A1 || A2 || A3 || B1 || B2 || B3)

因此:

boolean R = ((A1 || A2 || A3) && (B1 || B2 || B3)) || (C && (A1 || A2 || A3 || B1 || B2 || B3));

眼睛稍微容易一些(也许是心灵):

boolean T1 = (A1 || A2 || A3);
boolean T2 = (B1 || B2 || B3);

boolean R = (T1 && T2) || (C && (T1 || T2));

答案 5 :(得分:1)

A中的至少一个和B中的至少一个是真的 或

C且A和B中至少有一个是真的

((a1 || a2 || a3)&&(b1 || b2 || b3))|| (c&&((a1 || a2 || a3)&&(b1 || b2 || b3)))

答案 6 :(得分:0)

类似的东西:

isTrue = ( ((A1 || A2 || A3) && ( B1 || B2 || B3)) || 

         ( C && ( (A1 || A2 || A3) && ( B1 || B2 || B3) ) ) )

第二部分的问题不是很清楚:

C和A和B中的至少一个= C或A中的至少一个和B中的至少一个?

如果是这种情况,一些答案是不正确的。

C和(A1和!B1)应评估为False,而答案中的某些表达式将评估为true。