【发布时间】:2015-08-14 00:22:03
【问题描述】:
这是我关于 Stack Overflow 的第一个问题。
我是逻辑编程的新手,正在尝试评估它是否可以用来解决我正在研究的一些匹配问题。
问题:
假设我们有一个看起来像这样的集合 A。
A = {1, 2, 3, 4}
然后我们还有一些看起来像这样的其他集合。
B = {1, 2}
C = {3, 5, “banana"}
D = {2, 3, 4}
我要解决的问题是,
“找出与我们知道的其他集合相比,与集合 A 共享最多成员的集合。”
这种情况下的答案应该是集合 D,因为它与集合 A 共享三个成员。与其他仅与 A 共享两个和一个成员的集合相比。
问题一:
逻辑编程能解决这类问题吗?
问题2:
如果可以,你会如何在例如 Clojure 的 core.logic 中做到这一点?
【问题讨论】:
-
我不明白为什么这里需要逻辑编程。您只需要一个简单的集合交叉点。查看clojure.github.io/clojure/clojure.set-api.html
标签: clojure constraint-programming logic-programming clojure-core.logic minikanren