Prolog - 删除非唯一元素

2024-04-10

我有一个谓词来检查元素是否是列表的成员,并且看起来如下:

member(X,[X|_]).
member(X,[_|T]) :- member(X,T).

当我打电话时: ?- member(1,[2,3,1,4]) 我明白了:是的。

现在我必须使用它来编写谓词,该谓词将从列表列表中删除所有非唯一元素,如下所示:

remove([[a,m,t,a],[k,a,w],[i,k,b,b],[z,m,m,c]],X).
X = [[t],[w],[i,b,b],[z,c]]

我怎样才能做到这一点?


Using library(reif) for SICStus http://www.complang.tuwien.ac.at/ulrich/Prolog-inedit/sicstus/reif.pl|SWI http://www.complang.tuwien.ac.at/ulrich/Prolog-inedit/swi/reif.pl:

lists_uniques(Xss, Yss) :-
   maplist(tfilter(in_unique_t(Xss)), Xss, Yss).

in_unique_t(Xss, E, T) :-
   tfilter(memberd_t(E), Xss, [_|Rs]),
   =(Rs, [], T).

请注意,虽然没有限制如何命名谓词,但非关系型命令名称通常隐藏了背后的纯关系。remove是一个真正的命令,但我们只想要一种关系。列表列表与仅包含唯一元素的列表列表之间的关系。

用法示例:

?- lists_uniques([[X,b],[b]], [[X],[]]).
   dif(X, b).

所以在这种情况下我们离开了X未实例化的变量。因此,Prolog 计算可能的最一般答案,找出什么X必须看起来像。

(请注意,在这种情况下,您接受的答案错误地失败了)

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

Prolog - 删除非唯一元素 的相关文章

  • 使用失败、回溯 Prolog 查找列表的最小值

    我想使用导致回溯的失败来计算列表的最小值 我如何改变分钟 分钟 X 分钟 以使其工作 min X A B X is the min of A B min X X Y X lt Y min Y X Y Y lt X member X X me
  • 在序言中返回列表

    我想问一个关于返回列表的问题 事实 团队 团队名称 总监 国籍 总体目标 team milan allegri italy 8 5 team inter benitez italy 7 6 team barcelona guardiola
  • 序言排列函数

    我是 Prolog 的新手 我知道排列的递归函数 即 per per L X P del X L L1 per L1 P 我想知道当我们收到时这个函数在最后一次迭代中的逻辑树per 它返回哪个元素 Sonia 您还没有给我们 del 谓词
  • Prolog 中的分配性检查

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

    我想不出我需要它的情况 优雅的系统提供false 0作为命令式的声明式同义词fail 0 它有用的一个例子是当您想要手动强制回溯副作用时 例如 between 1 3 N format line w n N false line 1 lin
  • Prolog 时间重叠问题

    假设我有这个知识库 free ann slot time 8 0 time 9 0 free ann slot time 10 0 time 11 0 free bob slot time 7 0 time 8 30 free bob sl
  • 如何提高词法分析效率?

    在解析一个 3 GB 的大文件时DCG https www metalevel at prolog dcg 效率很重要 我的词法分析器的当前版本主要使用 or 谓词 2 http www swi prolog org pldoc doc f
  • Prolog - 递归列表构建

    对于我正在编写的程序 我需要创建一个列表列表 其中包含代表乘积的数字对和两个给定数字的总和 现在我有一个函数 我可以指定将列表添加到列表中的次数 稍后将使用完整功能进行扩展 这是我所拥有的 s1 0 X s1 Q X N is Q 1 mu
  • 如何声明两个列表具有相同的长度?

    我需要知道如何比较 Prolog 中两个列表的长度 这是我到目前为止所拥有的 sum N1 N2 checklength N1 N2 checklength N1 N2 L1 is length N1 What L2 is length N
  • 在 Prolog 中编辑 Eliza 聊天机器人

    我一直在努力尝试在 Prolog 中编辑 Eliza 聊天机器人 每次我尝试编辑某些内容时 都会出现新的错误 它是否受到任何形式的编辑保护 我使用 SWI prolog 编辑器进行编辑 问题是我试图在没有完全理解代码的情况下最小化代码 我正
  • 如何在 swi-prolog 的 prolog 文件中运行 prolog 查询?

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

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

    我有这样的对象列表 list obj x y obj x z obj a b obj b c 我想删除那些共享相同第一个值的元素 这样我就可以使用修改后的列表 在这种情况下 最终列表将如下所示 list obj a b obj b c 有人
  • 如何从序言中的列表中删除列表?

    我想在序言中实现以下问题 Given L1 1 2 3 4 and L2 2 3 4 调用名为remove list L1 L2 L 的函数将从L1中删除L2 所以L将是 1 但是 如果第二个列表的元素与 L1 中的元素顺序不同 或者更准确
  • Prolog 中的迷你数独求解器中途停止

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

    我正在尝试用简单的极小极大算法来解决井字游戏 简单 但应该涵盖很多语言 到目前为止我所拥有的 该板表示为 9 个 未绑定 变量的数组 这些变量可以设置为x or o 获胜条件基本上是 win Player X1 X2 X3 X1 Playe
  • 导入 csv 文件数据以填充 Prolog 知识库

    我有一个 csv 文件example csv其中包含两列 标题为 var1 和 var2 我想填充一个最初为空的 Prolog 知识库文件import pl具有重复的事实 而每一行example csv处理方式相同 fact A1 A2 f
  • SWI Prolog 使用的检查优化会发生什么情况?

    去引用SICStus Prolog 手册 https sicstus sics se sicstus docs 3 12 9 html sicstus Occur html 逻辑编程背后的通常数学理论禁止 创建循环项 规定发生检查应该是 每
  • Prolog内存问题

    我想找到一种方法来分析我在序言中编写的谓词 一个巨大的谓词 的内存使用情况 我目前正在运行它swi http www swi prolog org and yap http www dcc fc up pt vsc Yap document
  • 根据一个值找到列表内列表的最小值

    我在序言中有这个列表 dublin london 1000 dublin moscow london 5000 我想计算列表的最小值 这样答案应该是 dublin london 1000 这个问题有一些类似的问题序言中列表列表中的最小值 h

随机推荐

  • Xcode 8 Swift 3 音高改变声音

    我正在尝试制作一个带有击中声音的简单游戏 每当您击中某物时 击中声音都会有不同的音调 我以为这很简单 但最终却带来了很多东西 其中大部分是我完全从别人那里复制的 func hitSound value Float let audioPlay
  • C 编程:预处理器、宏作为标记

    我正在尝试做一些概念上与此类似的事情 但似乎无法让它发挥作用 最后显示错误 任何想法 include
  • z/OS 如何调用 Web 服务? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个 COBOL 程序 需要从 Web 服务获取数据 如果不使用 CICS 我最好的选择是什么 我认为 C 程序可以读取 Web
  • Python-2.x 中的 super() 是否损坏? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在页面视图之间导航时如何取消所有正在运行的传奇

    当用户决定导航到应用程序内的另一个 页面 时 我正在尝试找到一种简单易用的方法来取消 页面 内所有正在运行的传奇 我们不使用路由 而是使用每个 页面 是一个更大的主机应用程序中自己的小部件 负责在用户导航时创建和加载每个页面 目前 我们正在
  • 在 .NET 5.0 上向 Windows 窗体添加配置

    我正在将现有的 Windows 窗体 C 应用程序迁移到 NET 5 0 并且我正在尝试遵循迁移文档 https learn microsoft com en us dotnet desktop winforms migration vie
  • CMake:执行宏/函数作为add_custom_command的命令

    我正在使用一个外部库 它提供了用于自动代码生成的 CMake 函数 以在我的 CMakeLists 中使用 问题是 每当我修改 CMakeLists 时 该函数都会再次运行 从而触发新生成但未更改的源的重新编译 我需要像 add custo
  • 如何让 forEach 循环等待每个 Ajax 函数完成

    我有一个array语句 我想循环遍历每个语句并提交给server via an ajax称呼 我必须确保每一个ajax请求在发送下一个请求之前执行 因为server边代码 我正在创建一个unique key为了这array的声明 发生的情况
  • 使用 PDO 设置连接超时

    我正在使用 PDO 从 MySQL 服务器获取数据 我注意到的是 如果 MySQL 服务器不可用 则需要really 相对 很长时间这段代码返回异常 try handle new PDO db type host db host dbnam
  • 如何将 CMD shell 变量展开两次(递归)

    使用 Windows XP CMD 命令行 我可以将变量展开两次 如下所示 set AAA BBB set BBB CCC for F usebackq tokens i in echo AAA do echo i 会回声CCC I e A
  • 调用未定义函数 pcntl_fork() php-fpm nginx

    我正在尝试使用pcntl fork 在 php fpm 中 但它不可用 我得到 Call to undefined function pcntl fork 尽管我已经评论过了disable functions in the php ini
  • 为什么固定大小的缓冲区只能是原始类型?

    我们必须与本机代码进行大量互操作 在这种情况下 使用不需要封送处理的不安全结构要快得多 但是 当结构包含非基本类型的固定大小缓冲区时 我们无法执行此操作 为什么 C 编译器要求固定大小缓冲区只能是基本类型 为什么固定大小的缓冲区不能由如下结
  • word2vec gensim 多种语言

    这个问题完全超出了我的想象 我正在使用 gensim 训练 Word2Vec 模型 我提供了多种语言的数据 即英语和印地语 当我试图找到最接近 人 的词时 我得到的是 model wv most similar positive man O
  • 如何在asp.net中制作json网络服务?

    我是第一次制作网络服务 我需要在 C 中使用 json 来实现这一点 我不知道如何编写从数据库获取数据的方法的代码 任何建议 您可以使用以下代码返回 JSON 序列化字符串 WebMethod Description Your Descri
  • 如何将 Clojure memfn 与 Java 构造函数一起使用?

    我想使用 Java 构造函数作为一流的 Clojure 函数 我的用例是将字符串序列转换为具有单个字符串构造函数的 Java 对象序列 简单的Java对象 public class Foo public Foo String aString
  • 无法验证 view.model.product.ProductSearchCriteria。不存在 Bean 自省。请将@Introspected添加到课程中

    自定义验证器问题不存在 Bean 自省 请将 Introspected 添加到类中并确保启用 Micronaut 注释处理不工作 Micronaut 2 2 1 Retention RetentionPolicy RUNTIME Targe
  • Visual Studio 2017 无法创建目录,mkdir 退出代码:1

    我已将 Visual Studio 2017 连接到 SSH 服务器 Windows 10 Ubuntu Bash 编译时我得到一个错误 F Program Files x86 Microsoft Visual Studio 2017 Co
  • 一个变量行位于另一变量行内

    我有以下脚本 sql SELECT FROM users q mysql query sql or die mysql error row mysql fetch array q sql1 SELECT FROM other table q
  • 为什么有些哈希值使用大括号初始化,有些哈希值使用圆括号初始化?

    我正在查看以下演示嵌套哈希的代码 my HoH flintstones gt husband gt fred pal gt barney jetsons gt husband gt george wife gt jane his boy g
  • Prolog - 删除非唯一元素

    我有一个谓词来检查元素是否是列表的成员 并且看起来如下 member X X member X T member X T 当我打电话时 member 1 2 3 1 4 我明白了 是的 现在我必须使用它来编写谓词 该谓词将从列表列表中删除所