在 Prolog 规则中使用事实列表

2023-12-01

我目前正在编写一个铁路线程序,但在使用来自事实的列表时遇到了一些麻烦。我对 Prolog 很陌生,到目前为止已经写了以下事实和规则:

location(euston, [northernLine]).
location(warrenStreet, [victoriaLine, northernLine]).
location(warwickAvenue, [bakerlooLine]).
location(paddington, [bakerlooLine]).

hasCommonLine(Location1, Location2, Line) :-
    location(Location1, Line),
    location(Location2, Line).

这个想法是让规则返回两个位置共有的行的名称。如果我尝试的话这会起作用hasCommonLine(warwickAvenue,paddington,Line).,但是如果我尝试它会返回 falsehasCommonLine(euston,warrenStreet,Line)..

我怀疑这是因为该规则仅检查列表的第一个元素,因此仅比较[northernLine] and [victoriaLine]而不是检查列表中的每个元素。任何实现这一目标的指导将不胜感激!


您可以检查是否Line是两个列表的成员:

 hasCommonLine(Location1, Location2, Line) :-
     location(Location1, Lines1),
     location(Location2, Lines2),
     member(Line, Lines1),
     member(Line, Lines2).

然后,如果您需要查找两个位置之间的所有公共线路,您只需调用

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

在 Prolog 规则中使用事实列表 的相关文章

  • 将字符串中的 i 个连续相同字符分组到列表中[重复]

    这个问题在这里已经有答案了 我希望以这样的方式分隔输入字符串 即所有连续的相同字符都分组在一个列表中 示例1 str aabbcccdeddgg output aa bb ccc d e dd 期望的输出 aa bb ccc d e dd
  • 如何获取列表的最后一个索引?

    假设我有以下列表 list1 1 2 33 51 indices 0 1 2 3 如何获取该列表的最后一个索引 在本例中为 3 len list1 1绝对是可行的方法 但如果您绝对需要list具有返回最后一个索引的函数 您可以创建一个继承自
  • 将列表中的所有其他元素相乘

    我有一个清单 比方说 list 6 2 6 2 6 2 6 我希望它创建一个新列表 其中每个其他元素乘以 2 每个其他元素乘以 1 保持不变 结果应该是 12 2 12 2 12 2 12 def multi res 0 for i in
  • 在 python 中创建默认列表

    我正在尝试创建一个非常有用的等效列表collections defaultdict http docs python org library collections html collections defaultdict 下面的设计效果很
  • 将 X 插入到排序列表中的正确位置

    在序言中 如何将 X 插入到排序列表中的正确位置 我的尝试 insert X Y Rest X Y Rest X lt Y insert X Rest BiggerRest 您的方向是正确的 但您需要解决这三个问题 insert X X i
  • 对 Python 列表元素进行分组

    我有一个 python 列表 如下所示 my list 25 1 0 65 25 3 0 63 25 2 0 62 50 3 0 65 50 2 0 63 50 1 0 62 我想根据以下规则对它们进行排序 1 gt 0 65 0 62 l
  • python 中分割字符串以获得一个值?

    需要帮助 假设我在名为 input 的变量中有一个字符串 Sam Person name kind input split 通过执行上述操作 我得到两个具有不同字符串 Sam 和 Person 的变量 有没有办法只获取第一个值 name S
  • 字典的嵌套列表

    我正在尝试创建dict通过嵌套list groups Group1 A B Group2 C D L y x 0 for y in x if y x 0 for x in groups d k v for d in L for k v in
  • 带参数的 Python 列表过滤

    python中有没有一种方法可以在列表上调用过滤器 其中过滤函数在调用期间绑定了许多参数 例如有没有办法做这样的事情 gt gt def foo a b c return a lt b and b lt c gt gt myList 1 2
  • Python 检查列表是否嵌套

    我有一个列表 有时它是嵌套的 有时不是 根据是否嵌套 延续不同 如何检查此列表是否嵌套 True or False应该输出 example 1 2 3 gt False 1 2 3 gt True 您可以使用isinstance https
  • python - 如何删除每行中的重复列表(pandas)?

    我的每一行中都包含一个列表 我想通过保留分数中的最高值来删除重复元素 这是我的数据框 df1 中的数据 pair score 0 A A 1 0000 1 A F 0 9990 2 A G 0 9985 3 A G 0 9975 4 A H
  • 这个版本的trace有什么问题?

    我有这个跟踪元解释器 它是为 swi prolog 编写的 trace Goal trace Goal 0 trace true Depth true trace fail Depth fail trace A gt B Depth A g
  • 如何在 git 中仅获取唯一的提交

    我想获取所有分支中唯一提交的列表 但是如果有人在分支中使用 rebase 则会提交松散的父项 如何解决这个问题呢 如何获取进行独特更改的提交列表 I use git log oneline graph cherry pick left ri
  • 在python中将列表转换为字符串

    我对 python 语言相当陌生 我一直在寻找这个问题的答案 我需要一个如下所示的列表 Kevin went to his computer He sat down He fell asleep 转换为如下字符串 Kevin went to
  • 如何在循环列表本身时删除列表元素而不重复它

    我在这个 Python for 语句中浪费了一点时间 class MyListContainer def init self self list def purge self for object in self list if objec
  • 检查列表是否已排序的 Pythonic 方法

    有没有一种Python式的方法来检查列表是否已经排序ASC or DESC listtimestamps 1 2 3 5 6 7 就像是isttimestamps isSorted 返回True or False 我想输入一些消息的时间戳列
  • Prolog 列表列表获取所有元素

    我有一个列表列表 decide 1 2 3 2 3 6 4 K 我想按 返回所有可能的解决方案 规则是首先返回其列表大小为 1 的值 然后我想返回其大小大于1的值 size 0 size Xs L size Xs N L is N 1 he
  • 当列表中不存在 X 时,从列表中查找大于 X 的值

    我试图从列表中查找大于特定值 在我的情况下已知 的值 Example Given list 1 2 5 10 15 list is sorted 查找大于的值X 7在这种情况下 期望的结果 返回一个包含值的列表 10 15 我尝试使用jav
  • SWI-Prolog 与 C++ 接口的问题

    我试图让 SWI Prolog 与 C 很好地配合 现在束手无策 现在 在我开始准确解释我的问题是什么之前 我想首先说明我的项目是关于什么的以及我选择了哪些工具来开发解决方案 我的教授分配给我的任务是开发一个 GUI 程序 作为 SWI p
  • 计算列表的累积和,直到出现零

    我有一个 长 列表 其中随机出现零和一 list a 1 1 1 0 1 1 0 1 0 1 1 1 我想获取 list b 列表中出现 0 之前的总和 出现0的地方 在列表中保留0 list b 1 2 3 0 1 2 0 1 0 1 2

随机推荐

  • Excel 2010 64 位无法创建 .net 对象

    我有一个在 Excel 中使用的简单类库 这是我的课程的简化 using System using System Runtime InteropServices namespace SimpleLibrary ComVisible true
  • 有什么方法可以暂停 firestore 侦听器而不删除它?

    有什么方法可以暂停 firestore 侦听器而不删除它 我有多个 Firebase 侦听器 其中一些侦听器依赖于其他侦听器 这些侦听器会在数据更改时更改或启动其他侦听器 假设我的第一个监听器启动了第二个监听器onSnapshot 第一个听
  • 重载指向两个不同类的指针的赋值运算符

    我的问题 我正在尝试重载指向两个不同类的指针的赋值运算符 这是一个例子 dc h ifndef DC H define DC H include ic h class dc double d char c public dc d 0 c 0
  • 一段时间后 AKFFTTap 停止生成数据

    我将 AudioKit 用于录音机应用程序 并向 AKMicrophone 添加了 AKFFTTap 以绘制自定义音频波形 这一切都运行良好 但是经过几次录音后 或者在应用程序录音屏幕打开一段时间后 FFT 数据突然变成全 0 我知道麦克风
  • 如何对出现在硬盘上的目录进行排序?

    在我的硬盘上 例如 目录1 目录2 目录3 目录4 我的代码是 DirectoryInfo dInfo new DirectoryInfo AutomaticsubDirectoryName DirectoryInfo subdirs dI
  • 如何在 Android Studio 中重新包含排除的目录?

    解释了如何在 Android Studio 中排除目录here 它还有一个关于不知道如何再次将其包含回来的警告 现在我需要这样做 当然 我可以再次创建 导入项目 但我想有更好的方法可以做到这一点 有没有 如何 由于没有 将目录标记为在 An
  • Python Selenium使用Windows浏览器上传文件

    我正在使用 selenium 在 Python 中开发一个浏览器自动化项目 我正在尝试将图片上传到页面 我登录 转到该页面 然后单击上传按钮 单击上传按钮后 将打开一个 Windows 文件浏览器 我必须在其中选择文件路径并单击 Windo
  • 如何使用c#以管理员身份运行批处理文件来安装Windows服务

    我创建了一个批处理文件 用于将我的程序安装为 Windows 服务 批处理文件的内容 gt C Project Test InstallUtil exe gt C Project Test ROServerService Server bi
  • 外部主机上的会话变得混乱

    问题听起来像这样 使用会话登录在我的本地主机上工作得很好 但是当完全相同的文件上传到我的主机 hostgator 时 会话不会 或者它们会变得混乱 此外 注销功能在主机上不起作用 我检查过 每个页面都有 session start 在里面
  • 使用 -v 查看调用?

    我的一个 iOS 应用程序遇到严重的链接器问题 请参阅上一篇文章详情 linker command failed with exit code 1 use v to see invocation 一个基本问题是 如何使用 v 查看调用 我可
  • 如何接收来自 Angular Reactive Form 的文件上传?

    我有在 Angular 7 反应式表单中上传文件的模块 我需要反应式表单 因为我需要一起上传文件和其他一些信息 我关注这篇文章 https medium com amcdnl file uploads with angular reacti
  • Scala 整数列表列表

    我是 Scala 新手 有点困惑 给定一个列表列表List List Int 如何调用每个列表的某个元素的特定索引 例如每个列表的第二个元素 Simple val ints List List 1 2 List 3 4 val result
  • 如何通过网络浏览器检查应用程序是否已安装?

    这是针对 Windows 的 我有一个要转换为 AIR 的 Flash 应用程序 我使用 NSIS 构建了一个强制安装程序 它运行良好 不过 我希望在网站上有一个图标 用于检查应用程序是否已安装并询问用户是否希望运行它 如果未安装 他们可以
  • 在 Windows/NTFS 中附加到文件是原子的吗?

    如果我从多个进程编写一个简单的文本日志文件 它们是否会覆盖 损坏彼此的条目 基本上 这个问题UNIX 中文件追加是原子的吗 但适用于 Windows NTFS 您可以在本地文件上获得原子追加 使用 FILE APPEND DATA 访问权限
  • 使用 OpenSSL 1.1.1d 静态编译 Qt 5.13.1 生成 QSslSocket::connectToHostEncrypted:TLS 初始化失败

    我想实现什么目标 我需要创建一个具有 SSL 支持的便携式 一体化 应用程序 问题是什么 因此 我面临的核心问题是将 SSL 支持纳入我的二进制 便携式应用程序中 A MCVE该应用程序的功能很简单 Project pro file QT
  • Spring Data JPA 本机查询中的变量

    使用 Spring Data JPA 我需要查询数据库并返回一系列OrderEntitys基于一个startAmt and a endAmt金额 我不确定是否应该将这两个变量映射到实体OrderEntity 作为某种类型的单独类 实体 模型
  • pandas:带有列表的记录以分隔行

    我有一个像这样的 Python Pandas DataFrame NCBI RefSeq 的 UCSC 模式 chrom exonStart exonEnds name chr1 100 200 300 110 210 310 gen1 c
  • 单击按钮即可 Xpages 更多字段(无限制)

    我想从 x 开始 xpage 应用程序上的字段 在我的应用程序中 我有一对文本数据字段和数字数据字段 比如说 10 对 然后当用户单击 更多字段 时 我希望动态显示更多对 而无需完整的字段刷新页面 但想要无限制 字段 只要页面不崩溃 然后我
  • 如何从我的应用程序启动电子邮件客户端,以便我可以看到收件箱、已发送的项目等

    当我从应用程序启动电子邮件客户端时 会打开电子邮件客户端的撰写窗口 但是当我像这样启动时 我无法看到收件箱 已发送的项目等 简而言之 如何从应用程序启动电子邮件客户端 就像从桌面启动一样 任何建议将不胜感激 简而言之 如何从应用程序启动电子
  • 在 Prolog 规则中使用事实列表

    我目前正在编写一个铁路线程序 但在使用来自事实的列表时遇到了一些麻烦 我对 Prolog 很陌生 到目前为止已经写了以下事实和规则 location euston northernLine location warrenStreet vic