Optimization 如何最好地检查两个无序对是否匹配?

Optimization 如何最好地检查两个无序对是否匹配?,optimization,logic,boolean-logic,Optimization,Logic,Boolean Logic,我有两对(A,B)和(C,D)。我想检查它们是否包含相同的元素。顺序不详。我可以通过以下方式实现这一点: (A == C && B == D) || (A == D && B == C) 但这似乎是非常统一和重复的代码,好像有一种方法可以浓缩它。我不知道怎么做。有没有可能浓缩这种逻辑 (A == C && B == D) || (A == D && B == C) 真值表 +------+------+------+------

我有两对(A,B)和(C,D)。我想检查它们是否包含相同的元素。顺序不详。我可以通过以下方式实现这一点:

(A == C && B == D) || (A == D && B == C)
但这似乎是非常统一和重复的代码,好像有一种方法可以浓缩它。我不知道怎么做。有没有可能浓缩这种逻辑

(A == C && B == D) || (A == D && B == C)
真值表

+------+------+------+------+----------+
|   A  |  B   |  C  |   D  |   O/P  |
+------+------+------+------+----------+
|   0  |   0   |   0  |   0  |    1     |
+------+------+------+------+----------+
|   0   |   0  |   0  |  1   |    0     |
+------+------+------+------+----------+
|   0   |   0  |  1   |  0   |    0     |
+------+------+------+------+----------+
|   0   |   0  |  1   |   1  |    0     |
+------+------+------+------+----------+
|   0   |   1  |   0  |   0  |   0      |
+------+------+------+------+----------+
|    0  |   1  |   0  |  1   |    1     |
+------+------+------+------+----------+
|    0  |   1  |  1   |  0   |   1      |
+------+------+------+------+----------+
|    0  |  1   |  1   |   1  |   0      |
+------+------+------+------+----------+
|   1   |   0  |   0  |   0  |   0      |
+------+------+------+------+----------+
|   1   |   0  |   0  |  1   |     1    |
+------+------+------+------+----------+
|   1   |   0  |   1  |  0   |    1     |
+------+------+------+------+----------+
|   1   |   0  |  1   |  1   |    0     |
 +------+------+------+------+----------+
|    1  |   1  |  0   |   0  |     0    |
+------+------+------+------+----------+
|   1   |   1  |   0  |  1   |     0    |
+------+------+------+------+----------+
|    1  |  1   |   1  |  0   |     0    |
+------+------+------+------+----------+
|    1  |   1  |  1   |  1   |   0      |
+------+------+------+------+----------+
  • 如果A,B,C,D是布尔逻辑,那么(A==C&&B==D)| |(A==D&&B==C)是通过K-map归约技术和Quine-McCluskey最小化技术得到的最简单形式

  • 如果A、B、C、D是数字(
    ie int或float
    ),那么您可以简化为
    A+B==C+D

如果(A+B==C+D) { //真实状态 }

  • 如果A、B、C、D是字符串,那么布尔逻辑就不适用。它可以简化,但需要考虑其他信息来求解表达式

谢谢,希望您满意

这些项目是数字的吗?@MattClarke否。它们是类实例。Drat!所以不可能有花哨的数学语言。你用的是什么语言?一些语言允许:
例如((A,B)-包含在(C,D)中)
(假设每个集合中的对象数量相同)。APL可能有一个更紧凑的表示形式,因为您可以在预计算+内存与计算之间进行权衡:为您的对存储一个unic id(不依赖于顺序),这样您就可以编写:
if(pair1.id==pair2.id)