计算两个列表中匹配元素的数量

2024-02-09

我有 2 个包含随机数量元素的列表。例如 A=[1,2,4,5] 和 B=[1,2,3]。结果应该是2。 我尝试过的代码:

domains
Numbers1 = integer*
Numbers2 = integer*
int_list=integer*

predicates
nondeterm prinadl(integer, int_list)

clauses
   //here going the code that read number that I've entered, and according to entered numer,programm should do something
 answer(T):- T=5, 
    P = 0,
    write ("Enter the 1st list"), readterm (int_list, L),
    write ("Enter the 2nd list"), readterm (int_list, L2),
    L2 = [H|V], prinadl(H, L), P1 = P + 1,
    write(L2, P1, V).

 prinadl (X, L):- L=[X|_], !.
 prinadl (X, L):- L=[_|T], prinadl (X, T).

我对序言完全陌生。你能告诉我我错在哪里吗?我所需要的只是将匹配的数量打印到控制台。 提前致谢。


这个答案基于两件事:第一,猜测。第二,if_/3 https://stackoverflow.com/a/27358600/4609915通过@false。

让我们定义一下 这元谓词 /questions/tagged/meta-predicate count_left_while2/4.

count_left_while2(P_2,Xs,Ys,N)计数 号码N的相应列表项Xs and Ys充实的P_2。从左到右依次进行,count_left_while2停在前两项不满足的地方P_2。当一个列表为空而另一个列表不是空时,它也会停止。

:- use_module(library(clpfd)).

:- meta_predicate count_left_while2(2,?,?,?).
count_left_while2(P_2,Xs,Ys,N) :-
    N #>= 0,
    list_list_countleft_while(Xs,Ys,N,P_2).

nil_or_cons([]).
nil_or_cons([_|_]).

:- meta_predicate list_list_countleft_while(?,?,?,2).
list_list_countleft_while([],Xs,0,_) :-
    nil_or_cons(Xs).
list_list_countleft_while([X|Xs],Ys,N,P_2) :-
    list_list_prev_countleft_while(Ys,Xs,X,N,P_2).

:- meta_predicate list_list_prev_countleft_while(?,?,?,?,2).
list_list_prev_countleft_while([],_,_,0,_).
list_list_prev_countleft_while([Y|Ys],Xs,X,N,P_2) :-
    if_(call(P_2,X,Y),
        ( N0 #>= 0, N #= N0+1, list_list_countleft_while(Xs,Ys,N0,P_2) ),
        N = 0).

让我们将它与具体化术语相等谓词结合使用(=)/3 https://stackoverflow.com/a/27358600/4609915, 像这样:

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

计算两个列表中匹配元素的数量 的相关文章

  • Prolog 中的聊天机器人

    我一直在尝试在序言中创建一个聊天机器人 作为作业 到目前为止 我已经在 pl 文件中创建了一个数据库 并且列出了很多可能的对话 我知道序言是这样工作的 例如如果我们有 Chatbot good 然后我们输入 Chatbot good 它会回
  • YAP Prolog 中的正向链接?

    我需要在某些 Prolog 问题中使用前向链接器 我想避免使用普通元解释器从头开始实现它 但如果没有其他选项可用 这就是我必须要做的 因为使用元解释器执行此操作会很慢 而且我我确信应该有一些好的实现 有人知道 YAP 或 SWI Prolo
  • 如何实现 not_all_equal/1 谓词

    如何实施not all equal 1谓词 如果给定列表包含至少 2 个不同的元素 则该谓词成功 否则失败 这是我的尝试 不是很纯粹的尝试 not all equal L member H1 L member H2 L H1 H2 gt t
  • Prolog 匹配 vs miniKanren 统一

    在 Prolog 人工智能编程中 Bratko 在第 58 页说了以下内容 Prolog 中的匹配对应于逻辑中所谓的统一 但是 我们避免使用 统一 这个词 因为出于效率原因 在大多数 Prolog 系统中 匹配的实现方式并不完全对应于统一
  • 在 Prolog 中动态拆分列表

    我从序言开始几周 但我看到了更深入的操作列表的递归谓词的构造 我的问题是 是否可以构建一个谓词 将给定列表拆分为给定数量的其他列表 比如我想象的 split H T NumberLists Lists 递归实现 split 1 2 3 4
  • 如何在 Prolog 中计算数字序列的和

    任务是计算从0到M的自然数之和 我使用SWI Prolog编写了以下代码 my sum From To From gt To my sum From To S From 0 Next is 1 S is 1 my sum Next To S
  • 控制 Prolog 变量值选择

    灵感来自之前的一个问题 https stackoverflow com questions 41595786 using operator to save variables in a list我尝试实现一些可以枚举布尔表达式可能性的东西
  • 导入 csv 文件数据以填充 Prolog 知识库

    我有一个 csv 文件example csv其中包含两列 标题为 var1 和 var2 我想填充一个最初为空的 Prolog 知识库文件import pl具有重复的事实 而每一行example csv处理方式相同 fact A1 A2 f
  • 计算序言中列表的排列

    在 序言艺术 第二版中有一个问题 您应该定义一个谓词 Even permutation Xs Ys 和类似的奇数排列 当您查询时 例如 Even permutation 1 2 3 2 3 1 和 odd permutation 1 2 3
  • 如何找到排列的索引

    index List Idx Predicate will get List with permutation and I want to know index of permutation For example index 4 1 3
  • 在 SWI Prolog 中使用 process_create/3 使用命令提示符或 shell 时出错

    在 Windows 7 上 当我在 SWI Prolog 中使用 process create 3 打开 Notepad exe 等应用程序时 记事本将打开 但是 它不适用于使用命令提示符的应用程序 例如 当我尝试打开命令提示符窗口时 使用
  • 查找相邻成员

    我必须找出列表中的两个成员是否相邻 限制是使用append 3谓词 到目前为止 我已经完成了下面的操作 如果它是真的 它就有效 否则我得不到答案 就像它永远运行一样 adjacent X Y L append L1 X Y T1 appen
  • SWI-Prolog 中的跨模块“接口”调用

    这可能是 SWI Prolog 模块系统特有的 假设我们有三个 Prolog 模块 在 SWI Prolog 模块系统中 robin 在文件中robin pl arthur 在文件中arthur pl helper 在文件中helper p
  • Prolog 中的隔离列表

    我很难理解如何让我的代码显示由偶数和奇数组成的隔离列表 我什至不确定我的理解缺乏什么 显然我对这门语言很陌生 必须在学校使用它 我的命令式和功能性思维不会让我知道这到底是怎么回事 哈哈 现在 不 我不是要求你做我的作业 我只是请你帮我看看我
  • Prolog中计算数字是否为素数

    我正在尝试计算输入是否是素数 但出了问题 这是我的代码 primeNumber X prime prime A 1 prime prime A B R is A mod B R 1 R A prime prime X B B lt A Ne
  • 将 X 插入到排序列表中的正确位置

    在序言中 如何将 X 插入到排序列表中的正确位置 我的尝试 insert X Y Rest X Y Rest X lt Y insert X Rest BiggerRest 您的方向是正确的 但您需要解决这三个问题 insert X X i
  • 这个版本的trace有什么问题?

    我有这个跟踪元解释器 它是为 swi prolog 编写的 trace Goal trace Goal 0 trace true Depth true trace fail Depth fail trace A gt B Depth A g
  • Prolog:从哪里开始解决类似扫雷的难题?

    我需要在序言中写一些类似扫雷的东西 我能够用 正常 语言做到这一点 但是当我尝试用序言开始编码时 我完全不知道如何开始 我需要一些提示 输入规格 板尺寸 m n m n 1 16 三元组列表 i j k 在哪里i 1 m j 1 n k 1
  • 序言中的“如果”?

    有没有办法在序言中执行 if 操作 例如如果变量为 0 则执行一些操作 将文本写入终端 甚至不需要 else 但我找不到 if 的任何文档 是的 ISO Prolog 中有这样一个控制结构 称为 gt 你像这样使用它 condition g
  • WAM 中的扁平化形式

    WAM 教程重构指出查询 p Z h Z W f W 需要使用以下原则进行扁平化 话虽这么说 查询扁平化形式是 X3 h X2 X5 X4 f X5 X1 p X2 X3 X4 我对外部变量的定义感到困惑 请考虑以下内容 p Z h Y a

随机推荐

  • 检测“变换:translate3d”支持

    有谁知道我会如何检测transform translate3d x y z 有支持吗 我的问题是我想使用translate3d跨支持它的浏览器 因为它倾向于使用硬件加速 因此动画更平滑 然后回退到translate哪里不是 查看这个解决方案
  • VB6:扩展组合框中的项目数量

    有没有办法在 VB6 组合固有控件下拉时扩展其中出现的项目数量 我有大约 10 件物品 我想把它们全部展示出来 Karl Peterson 的经典 VB 网站上的这段代码将自动调整组合框的大小以匹配元素的数量 http vb mvps or
  • 我如何在没有看到合并的情况下进行责备

    如果我有一个历史记录如下的文件 A B C D E 我对 E 进行了责备 然后我想看看修订版 B 和 C 中发生了什么变化 但我并不真正关心 D 因为那是合并 我有办法做到这一点吗 我想我正在寻找某种 no merges 选项来 gitbl
  • 如何从 YouTube 频道 ID 获取用户的 Google+ ID

    我正在运行一项服务 人们可以使用 oauth 2 0 连接他们的 Google 帐户 并且通过 YouTube 权限 我可以管理他们的频道 访问他们的 YouTube 频道 ID 然而 我的问题是你是否可以倒退 即如何根据给定的 YouTu
  • 添加设备,在 genymotion 中出现 http 403 错误

    我有下载Genymotion 2 7 2 最新 形成侧面并安装在我的笔记本电脑中 我已经登录 添加任何设备时 它会给出以下错误 无法创建虚拟设备 服务器返回 HTTP 状态代码 403 None
  • 如何检测 Rails 3 路由中的整数?

    我想做一个littleroutes rb 中的一些额外逻辑可能不属于那里 但对我来说似乎最有意义 我有两条相互冲突的路线 说得原始一些 match videos browseby gt videos browse as gt browse
  • 如何在 Tomcat 中通过 JNDI 配置 JSF 2.0 应用程序的项目阶段

    一直在努力寻找一种配置 Tomcat 7 0 11 的方法 以便我的 Web 应用程序可以使用 Tomcat 配置中的项目阶段设置 到目前为止 没有运气 这个想法是在 Tomcat 服务器 主机 应用程序范围内设置此属性 但不在 web x
  • 周视图标题的全日历格式

    这些天我正在使用全日历 我想更改周视图中日期的格式 我发现很多人都成功使用了columnFormat month ddd week ddd d M day dddd d M 但这对我不起作用 也许原因是我使用西班牙语作为语言 这是我的日历代
  • 在 C# 中使用 twain 获取图像作为图像类

    我可以连接并从我的设备获取图像吐温网 http www codeproject com KB dotnet twaindotnet aspx 但我想将图像处理为Image班级 当我尝试这样的事情时 ArrayList pics tw Tra
  • Java:用于匹配引号之间的单词的正则表达式

    我有以下测试字符串 This is my te st case with lines for tes t ing with regex But as he said It could be an arbitrary number of wo
  • 让 SSL 与 OSX 上的 Apache/Passenger 一起使用

    我在我的开发机器上使用 apache passenger 但需要添加 SSL 支持 不通过控制面板公开的东西 我之前在生产中已经这样做过 但由于某种原因 我似乎无法在 OSX 上运行它 到目前为止我所遵循的步骤来自默认的 apache os
  • 转换 data.table 中的*一些*列类

    我想将 data table 列的子集转换为新类 这里有一个热门问题 转换 data table 中的列类 https stackoverflow com questions 7813578 convert column classes i
  • 如何将 asyncio 与其他操作系统线程同步?

    我有一个带有一个主线程的程序 我在其中生成第二个使用 asyncio 的线程 是否提供任何工具来同步这两个线程 如果一切都是异步的 我可以使用它的同步原语来完成 例如 import asyncio async def taskA lst e
  • VB.NET - 将 WinForm 应用程序导出/转换为 Web ASP.NET 应用程序的最简单方法

    背景 我有一个用 VB NET 编写的 winform 应用程序 它使用 WebService 根据用户选择进行不同采访的营销公司向用户发送不同的邀请 winform 应用程序从各种文本框 列表框和下拉列表中提取字符串值 以创建一些 XML
  • 在 Rails 应用程序中连接到 Google Analytics API [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有一个很好的教程 如何在 Rails 应用程序中与 Google Analytics API 交互
  • 将任何base64文件转换为文件并移动到php / Symfony 4中的目标路径

    预先感谢我正在创建 APIsymfony 4只是上传base64 image或通过任何文件POSTMAN我必须将文件移动到目标目录 我在控制器中编写了以下代码 通过控制器我试图将文件移动到目录 但是 我收到的错误如下 未捕获的警告 file
  • 如何阻止 IE7 由于 hasLayout 清除浮动

    我有一个包含元素 其中包含许多浮动元素 该包含元素还应用了百分比宽度值 在 IE7 中 包含浮动的元素后面的内容被清除 因为宽度值赋予了它 hasLayout 我认为 我不希望包含元素具有布局 但我确实需要它具有明确的宽度 有没有办法在 I
  • 在 bitbucket ssh 连接期间,Linux 终端上出现“错误的配置选项”。

    我想开始使用 bitbucket 我已经按照教程的步骤连接到他们的服务器 link https confluence atlassian com pages viewpage action pageId 270827678 配置文件总是有问
  • Sparklyr - 更改 Spark 中的日期格式

    我有一个 Spark 数据框 其中有一列characters作为 20 01 2000 日 月 年 但我试图将其更改为日期格式 这样我就可以使用这里的功能 https cwiki apache org confluence display
  • 计算两个列表中匹配元素的数量

    我有 2 个包含随机数量元素的列表 例如 A 1 2 4 5 和 B 1 2 3 结果应该是2 我尝试过的代码 domains Numbers1 integer Numbers2 integer int list integer predi