首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用clojure的core.logic / minikanren找到相似的集

用clojure的core.logic / minikanren找到相似的集
EN

Stack Overflow用户
提问于 2015-05-31 13:59:45
回答 1查看 246关注 0票数 3

这是我关于堆栈溢出的第一个问题。

我对逻辑编程很陌生,并试图评估它是否可以用来解决我正在研究的一些匹配问题。

问题:

假设我们有一个A组,看起来像这样。

代码语言:javascript
复制
A = {1, 2, 3, 4}

然后我们还有其他一些看起来像这样的场景。

代码语言:javascript
复制
B = {1, 2}
C = {3, 5, “banana"} 
D = {2, 3, 4}

我想解决的问题是,

“与我们所知道的其他组相比,找出与A组共享成员最多的组。”

在这种情况下,答案应该是D,因为它与集合A共享三个成员,而其他只与A共享两个和一个成员的集合。

问题1:

逻辑编程能解决这类问题吗?

问题2:

如果可以的话,您将如何在Clojure的core.logic中这样做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-31 17:10:00

契士

下面显示了使用clojure.set获得最佳拟合结果

代码语言:javascript
复制
(ns
  sample.sandbox
  (:require [clojure.set :as set])
  )

(def A #{ 1, 2, 3, 4})
(def B #{1, 2})
(def C #{3, 5, "banana"})
(def D #{2, 3, 4})

(defn best-fit-set
  [control & sets]
  (apply max-key count (map #(set/intersection control %) sets )))

(best-fit-set A B C D) => #{4 3 2}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30558297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档