- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 CLP(FD) 中,我们经常需要声明:“这是一个整数和有限域变量的列表,按(有时:严格)升序/降序排列。”
是否有任何 CLP(FD) 系统为此任务提供通用(可参数化)内置约束?
SWI-Prolog 提供了一个名为 chain/2
的约束。 ,这与我正在寻找的类似。但是,该名称有点过于具体,无法涵盖约束可以描述的所有关系(例如: #<
不是偏序,但在 chain/2
中是可接受的,导致序列(视为一组整数)不再计数作为数学顺序理论中定义的链)。因此,该名称并没有完全描述约束实际实现的内容。
请给出关于通常的二进制 CLP(FD) 约束的最通用定义 - 或至少包含 #<
的合适子集, #>
, #=<
和#>=
— 包括根据约束定义的代数结构的专有名称。施加的条件是约束描述一个实际数学结构,该结构在文献中具有适当的名称。
首先,考虑使用 SICStus Prolog 或 SWI:
:- use_module(library(clpfd)).
connex(Relation_2, List) :-
connex_relation(Relation_2),
connex_(List, Relation_2).
connex_relation(#=).
connex_relation(#<).
connex_relation(#=<).
connex_relation(#>).
connex_relation(#>=).
connex_([], _).
connex_([L|Ls], Relation_2) :-
foldl(adjacent(Relation_2), Ls, L, _).
adjacent(Relation_2, X, Prev, X) :- call(Relation_2, Prev, X).
示例案例:
?- connex(#<, [A,B,C]).
A#=<B+-1,
B#=<C+-1.
?- connex(#=, [A,B,C]).
A = B, B = C,
C in inf..sup.
?- maplist(connex(#<), [[A,B],[C,D]]).
A#=<B+-1,
C#=<D+-1.
请注意,甚至可以允许 #\=
,因为该关系仍然描述了数学顺序理论中已知的连接。因此,上面的代码对于通常的二进制 CLP(FD) 约束来说并不是最通用的。
最佳答案
Hoogle 不是很有用,但是Hayoo is!
foldcmpl
所以这是列表折叠的一种特殊形式,但它不应用 length list
次,而是少应用一次。
isSortedBy
其名称并不完全通用,但其签名却是通用的。也许坚持使用最通用的名称并没有多大帮助。否则我们就只有实体了?
定义如下:
The isSortedBy function returns True iff the predicate returns true for all adjacent pairs of elements in the list.
也许:all_adjacent_pairs(R_2, Xs)
。在使用以 adjacent_pair
作为某些修饰符的循环构造之后,这听起来有点像。
关于prolog - 最通用的高阶约束,描述相对于关系排序的整数序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26990728/
我正在使用缺少 findall 的高阶 Prolog 变体. 还有一个关于实现我们自己的问题 findall这里:Getting list of solutions in Prolog . 低效的实现
我正在尝试使用 Flow 类型创建高阶组件,但在处理返回的组件类型时遇到了问题。 最小的例子: /* @flow */ import React from 'react'; type Props =
我想抽象化传递到我的数组的 reduce() 函数中的函数,使该函数成为通用的“最强大的 Array reducer”。为此,我想在 reduce() 参数中传入不同的特定函数,以便能够指定比较标准。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
将宏名称作为其他宏的参数来模拟高阶函数是否“安全”? 即我应该注意哪里才不会搬起石头砸自己的脚? 以下是一些片段: #define foreach_even(ii, instr) for(int ii
谁能给我解释一下下面的代码是怎么回事。该函数正在接收 n 作为参数,那么 m 来自哪里?整个代码令人困惑。如果有人可以解释一下? function greaterThan(n) { retur
我有一个 list ,例如: ["Hello", "Goodbye"] 我想使用 map在名单上; 我已经成功使用 map前: f = ("example" ++) 那么: map f ["Hello
我正在尝试通过在线书籍“Learn you a Haskell”来学习一些 Haskell,并且我有一个关于高阶函数的问题。 我看到了some examples我想做一些更高级的功能,但我不知道为什么
我正在学习更深入的 redux,并且在处理高阶 reducer 时遇到一些麻烦。 我试图使用一个简单的分页示例来了解它是如何工作的。 NB:下面的代码只是 Nodejs 上下文中 redux 的一个快
高阶函数是什么呢? 高阶函数英文名叫:Higher Order function ,一个函数可以接收一个或多个函数作为输入,或者输出一个函数,至少满足上述条件之一的函数,叫做高阶函数。 前言
我写了一个小的 R 代码片段来遍历包含马尔可夫链实现的向量,并返回观察到的给定顺序的转换。具体而言,假设我们对状态空间 $\mathcal{S}$ 的 2 次转换感兴趣。最终目标是以方便的形式存储计数
如您所见,我很难表达标题中的问题。 我有一个包含 li 的 ul,它本身包含一个 ul 和它自己的 li。 我希望仅第一个 li 元素而不是第二个 ul 中的元素。 如果你看this fiddle (
我是一名优秀的程序员,十分优秀!