首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从一组可能的值中选择minikanren / clojure-core.logic?

如何从一组可能的值中选择minikanren / clojure-core.logic?
EN

Stack Overflow用户
提问于 2012-08-03 18:42:48
回答 1查看 508关注 0票数 1

如何表示n变量接受与一组n值不同的值的约束?

例如,可能我想搜索表单的表达式。

代码语言:javascript
复制
(op1 a (op2 b c))

具有最大值时,当a、b和c应该是1、2和3时(按某种顺序),而op1和op2都可以是* + - / exp中的任意值。

我可以看到如何使a1 2 3中获得一个值(例如通过使用conde )。bc也是如此。但我如何排除平等呢?我是否需要循环所有组合并显式地排除它们?

显然,我可以“手工”进行排除,但我想知道是否有一种更好(更有效)的方法,或者支持库包括这样的东西(我对线性规划库有更多的经验,它们通常有一堆处理这类常见情况的助手函数)。

将其概括为某些值可能出现一定次数的情况似乎会很拖拉……

现在我想一想,怎样才能找到最大的呢?这上面有没有一本好书或一套笔记?!

我使用的是clojure,但我的理解是clojure-core.逻辑和小型clojure几乎是一样的

Update:任何阅读这个问题的人如果想得到一个很好的介绍,请查看下面我在评论中提到的阿尔维斯纸

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-03 20:14:22

代码语言:javascript
复制
(run* [q] 
  (fresh [a b c]
    (== q [a b c])
    (fresh [x y z]
      (rembero a '(* + / - exp) x)
      (rembero b x y)
      (rembero c y z))))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11801502

复制
相关文章

相似问题

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