【发布时间】:2016-03-23 21:55:38
【问题描述】:
我有两对 (A,B) 和 (C,D)。我想检查它们是否包含相同的元素。顺序未知。我可以使用:
(A == C && B == D) || (A == D && B == C)
但这似乎是非常统一和重复的代码,好像有一种方法可以浓缩它。我不知道怎么做。能不能把这个逻辑浓缩一下?
【问题讨论】:
-
项目是数字吗?
-
@MattClarke 没有。它们是类实例。
-
该死!所以不可能有花哨的数学。
-
您使用什么语言?某些语言允许:例如
if ((A,B) -containedin (C,D))(假设每组中的对象数量相同)。 APL 可能有更紧凑的表示 -
一如既往,您可以在预计算+内存与计算之间进行权衡:为您的配对存储一个 unic id(不依赖于顺序),以便您可以写:
if ( pair1.id == pair2.id )。
标签: optimization logic boolean-logic