Predsort/3 类似于 msort/2

2023-11-26

我想知道是否可以使用predsort/3不丢失重复值?如果不是,那我应该如何对这个术语列表进行排序?

当前排序功能:

compareSecond(Delta, n(_, A, _), n(_, B, _)):-
        compare(Delta, A, B).

Result:

predsort(compareSecond, [n(3, 1, 5), n(0, 0, 0), n(8, 0, 9)], X).
X = [n(0, 0, 0), n(3, 1, 5)].

你看,这个词n(8,0,9)已经消失了,那不是我需要的。


predsort will删除重复项,但将其留给比较谓词来定义哪些元素是重复的。适应你的compareSecond如果第二个参数比较相等,则谓词还将第一个和第三个参数与其接收的函子进行比较。

或者,切换到msort:

?- maplist(swap_1_2, [n(3, 1, 5), n(0, 0, 0), n(8, 0, 9)], Swapped),
|    msort(Swapped, SortedSwapped),
|    maplist(swap_1_2, Sorted, SortedSwapped).
% snip
Sorted = [n(0, 0, 0), n(8, 0, 9), n(3, 1, 5)] .

其中的定义swap_1_2留给读者作为练习。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Predsort/3 类似于 msort/2 的相关文章

  • 多个事实的聚合解决方案

    尝试创建一个谓词 timePeriod 2 计算特定事实的两个日期之间的时间段 我已经设法自己做到这一点 但当 其他答案 存在于同一列表中时会遇到问题 即更容易用示例解释 我有以下知识基础事实 popStar Jackson 1987 19
  • Prolog 中的分配性检查

    假设我有一个等价关系eq 以及多个二元运算符o 1 o 2 o n 我想找出哪些操作分配给其他操作 假设我有一个可以确定两个表达式是否等价的知识库 一个简单的解决方案是输入所有可能的查询 对于左分配性 eq o 1 Z o 1 X Y o
  • Prolog:覆盖谓词和使用它之间的区别

    我觉得自己真的很愚蠢 感觉自己错过了一些东西 我基本上有两个文件 module pl通用逻辑规则 可重用 state pl一个针对当前场景 在模块文件中 module pl 我已经声明 inside Food Eater T isTime
  • Prolog 程序从列表中删除每个第 n 个元素

    您能帮我解决以下问题吗 编写三元谓词delete nth从列表中删除每个第 n 个元素 样本运行 delete nth a b c d e f 2 L L a c e false delete nth a b c d e f 1 L L f
  • 如何在 SWI-Prolog 中创建事实?

    我只想创建类似的东西 like x y 我已经尝试了很长时间了 真的很沮丧 谁能告诉我该怎么做 我假设您正在交互地使用 swi 并尝试输入事实会给您一个如下错误 1 like x y ERROR toplevel Undefined pro
  • SWI-Prolog - 显示长列表

    我正在使用 SWI Prolog 我正在尝试打印一个列表 但如果该列表有超过 9 个项目 它看起来像那样 1 15 8 22 5 19 12 25 3 有没有办法显示整个列表 看一下 http www swi prolog org FAQ
  • 获取 Prolog 中的解决方案列表

    我正在学习 Prolog 并且正在阅读一本名为 人工智能 Prolog 编程 的书 作为练习 我想学习如何扩展本书中的示例之一 有人可以帮忙吗 假设您有以下事实 parent pam bob pam is a parent of bob p
  • 针对数字板难题的优化 CLP(FD) 求解器

    考虑问题从https puzzling stackexchange com questions 20238 explore the square with 100 hops https puzzling stackexchange com
  • 如何在 swi-prolog 的 prolog 文件中运行 prolog 查询?

    如果我有一个定义规则的 prolog 文件 并在 Windows 中的 prolog 终端中打开它 它会加载事实 然而 然后它显示 提示我手动输入一些内容 如何将代码添加到文件中 以便它实际上会评估这些特定的语句 就像我输入它们一样 像这样
  • 如何在 Prolog 中为变量(如字符串)分配多个值?

    今天早些时候 我寻求帮助以在序言中构建数据库以及如何通过参数搜索 有人提出了这个 您还可以向每个处理器添加术语列表 例如 processor pentium g4400 brand intel family pentium series g
  • Prolog 同构图

    这里尝试解决同构图问题 作业信息 判断2个无向图是否同构 没有孤立的顶点 顶点数小于30 图的边作为谓词给出 即 e 1 2 f 1 2 我正在尝试使用以下方法 对于每对边 即图 1 和图 2 中的每条边 Try to bind the v
  • Prolog 中的迷你数独求解器中途停止

    我正在学习 七周七种语言 我只是想从书中找到一个例子 它解决迷你数独网格 4x4 作者使用的是 gprolog 但我使用的是 swi prolog 无论出于何种原因 我都无法让 gprolog 在我的虚拟机上工作 但 swi prolog
  • SWI-Prolog 中的约束编程

    我想要一个包含三个元素 A B 和 C 的列表 L 并具有以下约束 use module library clpfd L A B C L ins 1 3 A B C 但是 它给出了一个错误 Syntax error Operator exp
  • Prolog 匹配 vs miniKanren 统一

    在 Prolog 人工智能编程中 Bratko 在第 58 页说了以下内容 Prolog 中的匹配对应于逻辑中所谓的统一 但是 我们避免使用 统一 这个词 因为出于效率原因 在大多数 Prolog 系统中 匹配的实现方式并不完全对应于统一
  • 求解序言中极其简单的方程:A = B + C?

    我有一个非常简单的方程 我希望能够在序言中求解 A B C 我希望能够编写一个谓词来表达这种关系 它可以处理任何一个未实例化的参数 无需推广到更复杂的关系或方程 myEquation A B C something 我可以使用以下语义进行调
  • 转换句子会产生无限循环 - 但如何转换呢?

    我不明白这是哪里出了问题 请注意 我对 Prolog 很陌生 我确信我错过了一些东西 只是不知道那可能是什么 有人可以帮我吗 谢谢 这是我的代码 printSentence printSentence W write W write nl
  • 以系统的方式报告 Prolog 中查询失败的“原因”

    我正在 Prolog 中寻找一种方法 模式或内置功能 我可以用它来返回why一组谓词失败 至少就数据库中的谓词而言 当用户在系统中提出查询时 我试图能够说的不仅仅是 那是错误的 例如 假设我有两个谓词 blue 1如果某物是蓝色的 则为真
  • 如何为有效号码指定 DCG?

    我正在尝试为有效数字指定 DCG 如下所示 value Number gt valid number Number 基本上检查指定的值是否是数字 它也可能是变量 因此有必要检查 我不知道如何构建这个valid number不过 DCG 谓词
  • 如何在 Prolog 中解决这个算术表达式难题?

    我有一个编程问题 https blog svpino com 2015 05 08 solution to problem 5 and some other thoughts about this type of questions htt
  • 如何找到排列的索引

    index List Idx Predicate will get List with permutation and I want to know index of permutation For example index 4 1 3

随机推荐

  • 块注释开头的感叹号的作用是什么? (那是, ”/*! … */”)

    我刚刚在一些 xcode 示例项目中发现了这个注释声明 property masterVolume abstract Sets the master volume property float masterVolume 注释像往常一样是绿色
  • 轴刻度标记

    我的折线图的 x 轴代表金钱 有没有办法在每个刻度的开头附加一个 符号 目前它们的值只有 2000000 250000 300000 我希望他们显示 2000000 250000 300000 我尝试将 添加到我的 CSV 文件中 但当我尝
  • 使用 ng-transclude 似乎在表格中效果不佳

    我创建了一个简单的指令 用于在 td 当没有表数据时 即 未找到结果 会占用表的整行 在我只有静态文本之前 td 但现在我希望能够将任何 DOM 放入其中 我尝试添加ng transclude按照我的指令 但现在它以一种奇怪的方式渲染元素
  • 如何在Android中使用Web视图访问本地主机服务器

    我有一个 Android 应用程序 我需要访问我的网络服务器并将我的 Android 应用程序连接到网络上的另一个程序 我的网络程序正在工作 当我将其 IP 地址放在 Android FIrefox 或浏览器上时 它正在工作 但是当我用我的
  • 如何在 Angular 2 中解释 MVC 模式?

    找到了一个有用的博客Angular MVC 实现但仍在寻找好的解释角2 General 我认为该模式确实与语言无关 也就是说 设计 架构模式是相当抽象的 并且用不同的语言实现它们遵循这种更抽象的表示 这并不是说我们不能通过示例语言 例如 C
  • 获取 PostgreSQL 中某个范围内的日期列表

    我想获取两个日期 包括它们 之间的天数列表PostgreSQL数据库 例如 如果我有 开始日期 2012年6月29日 结束日期 2012年7月3日 那么结果应该是 29 june 2012 30 june 2012 1 july 2012
  • 初始化大型 std::array 时编译器挂起

    我需要初始化一个非常大的多维std array数据的 class Thing class World public World space nullptr World default private static unsigned int
  • ASP.NET MVC 4 异步控制器回调

    我只是使用 MVC 4 中新的异步控制器功能 如此处所述http www asp net mvc tutorials mvc 4 using asynchronous methods in aspnet mvc 4 如果我有一个可能需要 1
  • Leaflet - 获取覆盖全屏的地图

    在传单和地图框中 我想去掉地图上方和下方的两个灰色条 如下图所示 我的 map DOM 元素占据全屏 并且当我放大时灰色条消失 例如 zoomLevel 3 因此 灰色条似乎是由于 ZoomLevel 具有给定的图块高度 以 px 为单位
  • 获取给定 ID 的最新行

    在下表中 我如何获得最近一行 with id 1基于signin列 而不是全部 3 行 id signin signout 1 2011 12 12 09 27 24 NULL 1 2011 12 13 09 27 31 NULL 1 20
  • 如何在 Xcode 11 中启动没有 Storyboard >= iOS 13 的新项目?

    现在 带有 iOS 13 的 Xcode 11 启动时的设置与之前略有不同 将 AppDelegate m 文件中的许多功能移动到名为 SceneDelegate m 的新文件中 删除 Main storyboard 并在 AppDeleg
  • WPF DataGrid ComboBox 导致 InvalidOperationException

    当我尝试编辑组合框列的值时 我从数据网格中收到 InvalidOperationException AddNew 或 EditItem 事务期间不允许 DeferRefresh 我显示的所有项目都引用了同一列表中的另一个项目 因此这就是我使
  • 将 NumPy 字符串数组转换为日期时间

    例如 我有一个字符串数组 import numpy as np foo np array b 2014 04 05 b 2014 04 06 b 2014 04 07 为了检查数组的数据类型 我用以下命令打印它 print foo dtyp
  • 为什么 InnoDB 中的 IX 锁与另一个 IX 锁兼容?

    根据innodb锁模式 锁类型兼容性矩阵 X IX S IS X Conflict Conflict Conflict Conflict IX Conflict Compatible Conflict Compatible S Confli
  • 在c#中,如何构建从A到ZZ的数组,类似于excel对列进行排序的方式

    我正在寻找可以生成第一项是数组的代码A then B then C 后Z然后它会去AA then AB then AC 一直到ZZ 在 C 中执行此操作的最佳方法是什么 其中一种方法是 IEnumerable
  • 使用 Selenium Webdriver 查找元素内的元素

    我正在抓取一个网站 其中包含使用 JavaScript 生成的足球比赛列表 我编写了以下行 用于创建页面上所有游戏元素的列表 list browser find elements by xpath data sportid 1 如果我然后写
  • 将 Web.config 从 .NET 2.0 转换为 3.5

    我至少需要添加到 NET 2 0 网站的 web config 中以使其成为 NET 3 5 Visual Studio 添加了所有配置部分和脚本处理程序 但如果您不使用它们 它们真的有必要吗 是否有命令行工具可以将 NET 2 0 web
  • 什么是非脆弱 ABI?

    这似乎暗示everyone知道 Non Fragile ABI 是什么 考虑到它在 Xcode 中被引用的频率和事实性质 例如 下标需要接口节点的大小 这在非脆弱 ABI 中不是恒定的 or 选择要使用的 Objective C ABI 版
  • 在android中的onPreviewFrame期间转换YUV->RGB(图像处理)->YUV?

    我正在使用 SurfaceView 捕获图像并获取 Yuv Raw 预览数据public void onPreviewFrame4 byte data 相机camera 我必须在 onPreviewFrame 中执行一些图像预处理 因此我需
  • Predsort/3 类似于 msort/2

    我想知道是否可以使用predsort 3不丢失重复值 如果不是 那我应该如何对这个术语列表进行排序 当前排序功能 compareSecond Delta n A n B compare Delta A B Result predsort c