comparison - 如何比较两个规则列表?

标签 comparison wolfram-mathematica rules

我需要比较两个 var -> integer 形式的规则列表,以了解不匹配的情况。
判断是否存在lhs相同而rhs不同的规则。

例如:

{a->3, b->1, c->4} ~ ??? ~ {a->3, b->1, c->4} = true
{a->3, b->1, c->4} ~ ??? ~ {a->3, b->2, c->4} = false
{a->3, b->1, c->4} ~ ??? ~ {a->1, b->3, c->4} = false
{a->3, b->1, c->4} ~ ??? ~ {c->4, d->8, e->9} = true
{a->3, b->1, c->4} ~ ??? ~ {d->8, e->9, f->7} = true

在我的例子中,它们已经按lhs排序,并且所有lhs都是唯一的,如果它有助于使函数尽可能简单。

UPD:忘记了一件事!列表的长度可以不同。但似乎当前所有三个答案仍然有效。

最佳答案

这是另一个解决方案:

In[12]:= check[a:{__Rule}, b:{__Rule}] := FilterRules[a, b] === FilterRules[b, a]

In[18]:= {{a -> 3, b -> 1, c -> 4}~check ~ {a -> 3, b -> 1, c -> 4} ,
 {a -> 3, b -> 1, c -> 4}~check ~ {a -> 3, b -> 2, c -> 4},
 {a -> 3, b -> 1, c -> 4}~check ~ {a -> 1, b -> 3, c -> 4},
 {a -> 3, b -> 1, c -> 4}~check ~ {c -> 4, d -> 8, e -> 9},
 {a -> 3, b -> 1, c -> 4}~check ~ {d -> 8, e -> 9, f -> 7}}

Out[18]= {True, False, False, True, True}

(这依赖于选项列表已经排序的事实。)

关于comparison - 如何比较两个规则列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7725482/

相关文章:

C++结构的自动比较器

python - Numpy:如何检查 ndarray 中是否存在元组

python - 仅当单独的 boolean 列表中的元素为真时,才对 python 列表中的元素求和

3d - 如何将 TetGen 用于这个简单的 3D 几何体

xml - SonarQube - 将现有的 checkstyle xml 文件导入 SonarQube 失败

java - 如何在 drools6 中创建动态显着性

java - 在使用 && 或 || 时使用圆括号有区别吗?

function - Mathematica中的TunkRank

wolfram-mathematica - 简化 Mathematica 中的绝对值

html - gmail html 预览删除具有分页属性的 css 规则