序言中的谓词

2024-02-28

我需要在 prolog 中定义一个谓词,它将一个列表作为输入,对 >= 5 的数字的平方求和,并减去

这就是我目前所拥有的:-

pred([], 0).
pred([Head|Tail], Result) :-
    gr85(Head),
    pred(Tail, Total),
    Result is Head*Head + Total.

pred([Head|Tail], Result) :-
    leq2(Head),
    pred(Tail, Total),
    Result is Total - Head.

gr85(Number):-
    Number >= 5.

leq2(Number):-
    Number =< 2.

我的问题是如何排除 2 到 5 之间的任何内容。如果我在列表中输入 3,它将返回 false。

预期输入

pred([3,6,2,-1], Result).

预期产出

Result= 33 (6*6 -2-1)

添加“跳过全部”子句:

weird_sum([_|Tail], Result) :- weird_sum(Tail, Result).

我想当你分析时你会对Prolog的工作有一些了解where应增加该条款。

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

序言中的谓词 的相关文章

  • Prolog 中的聊天机器人

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

    如果我有一个定义规则的 prolog 文件 并在 Windows 中的 prolog 终端中打开它 它会加载事实 然而 然后它显示 提示我手动输入一些内容 如何将代码添加到文件中 以便它实际上会评估这些特定的语句 就像我输入它们一样 像这样
  • YAP Prolog 中的正向链接?

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

    所以基本上看来 GNU Prolog 在我的 32 位 x86 Linux 上使用 28 位整数 下面的代码无法编译 foo A A0 is 0xdeadbeef A1 is A0 gt gt 8 A2 is A0 gt gt 16 A3
  • 如何实现 not_all_equal/1 谓词

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

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

    我正在尝试用简单的极小极大算法来解决井字游戏 简单 但应该涵盖很多语言 到目前为止我所拥有的 该板表示为 9 个 未绑定 变量的数组 这些变量可以设置为x or o 获胜条件基本上是 win Player X1 X2 X3 X1 Playe
  • 求解序言中极其简单的方程:A = B + C?

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

    我不明白这是哪里出了问题 请注意 我对 Prolog 很陌生 我确信我错过了一些东西 只是不知道那可能是什么 有人可以帮我吗 谢谢 这是我的代码 printSentence printSentence W write W write nl
  • 在 prolog 中读取用户输入的字符串

    我是 Prolog 初学者 我正在使用 swi prolog 刚刚开始使用它 我需要将用户输入字符串拆分到列表中 我尝试了以下代码 但出现错误 指出 在子句正文中完全停止 无法重新定义 2 write Enter the String nl
  • Prolog:子句在源文件中不在一起

    我有这段代码 Family tree female pen male tom male bob female liz female pat female ann male jim parent pam bob parent tom bob
  • 我应该在 Prolog 和一般情况下避免尾递归吗?

    我正在阅读 立即学习 Prolog 在线书籍 以获取乐趣 我正在尝试编写一个谓词 该谓词遍历列表的每个成员并向其添加一个 使用累加器 我已经在没有尾递归的情况下轻松完成了 addone addone X Xs Y Ys Y is X 1 a
  • 查找相邻成员

    我必须找出列表中的两个成员是否相邻 限制是使用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 - 如何从输入文件的给定列表中创建变量列表?

    我有一个输入谓词将文件作为列表读取 输入 文件名 列表 该列表的格式将是 9 字面意思就是下划线字符 在这里 不是一个通配符 问题是我如何编写谓词 pred List List2 然后转换所有 进入变量但保留9还在同一个位置吗 所以如果我输
  • 如何验证涉及 diff/2 约束的交换性?

    围绕 diff 2 约束有很多炒作 特别是作为对 2 和 2 的某些非声明性的救援 这种非声明性通常被描述为非单调性 并给出了非交换性的例子 但是测试涉及 diff 2 的测试用例是否可交换的方法是什么 这是我想要做的元解释 我做了交换性测
  • 这个版本的trace有什么问题?

    我有这个跟踪元解释器 它是为 swi prolog 编写的 trace Goal trace Goal 0 trace true Depth true trace fail Depth fail trace A gt B Depth A g
  • 序言中的“如果”?

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

    以下看起来很不寻常 findall X member X 1 2 3 X X 1 2 3 痕迹更是如此 trace findall X member X 1 2 3 X Call 11 findall 100058 member 10005
  • 简单的布尔表达式测试

    user compiling user for byte code formula 0 P Q P Q P user compiled 2 lines read 768 bytes written 37208 ms yes formula

随机推荐

  • 如何追查 Wildfly 8.2.0.Final 中不起眼的 HA 集群错误

    设置 我有一个 Wildfly 8 2 0 Final 应用程序服务器 使用 full ha 配置文件在域模式下运行集群 该集群由两个 Wildfly 实例组成 主实例和从实例 每个实例都运行在自己的虚拟机上 应用程序 我的项目作为 war
  • Perl 中字符串的长度与字符编码无关

    长度函数假设汉字超过一个字符 如何在 Perl 中独立于字符编码确定字符串的长度 将中文字符视为一个字符 The length http perldoc perl org functions length html函数对字符进行操作 而不是
  • PHP 正则表达式句点

    如何在 PHP 正则表达式中添加句点 代码中的使用方式是 echo preg match d 1 645 matches 但显然那个时期 645 不被认可 请求有关如何开展这项工作的提示 Since 是一个特殊字符 你需要转义它才能真正得到
  • 在 Swift 子类中添加便捷初始化器

    作为学习练习 我正在尝试实现一个子类SKShapeNode它提供了一个新的方便的初始值设定项 它接受一个数字并构造一个 ShapeNode 它是数字宽度和高度的正方形 根据斯威夫特书 https developer apple com li
  • Python 2.7:附加到字典键的列表值

    我有以下数据 data 1 2 1 3 1 4 2 1 2 2 2 3 我想创建一个包含键列表值的字典 如何通过字典理解来做到这一点 i e 1 2 3 4 2 1 2 3 我已尝试以下操作 但列表在每次迭代时都会被覆盖 x y for x
  • bash中如何通过另一个变量获取一个变量?

    我在 bash 中有三个数组 arr1 arr2 arr3 arr2 1 2 3 4 arr3 6 7 8 9 How can I get a element of arr2 by arr1 like below arr1 0 0 To g
  • 大端和小端有点混乱

    我正在从这个网站上阅读有关小端和大端表示的内容http www geeksforgeeks org little and big endian mystery http www geeksforgeeks org little and bi
  • 如何将非 www 流量重定向到 CloudFront 后面的 EC2 实例上托管的网站的 www?

    我在 CloudFront 后面的单个 EC2 实例上托管一个网站 需要将所有非 www 流量重定向到 www 从 SO 上的其他 Q A 中 我能够在 Route53 上配置 A 记录 以将流量从 example com 重定向到 www
  • 对于类运算符,是否允许对其自身进行隐式类型转换?

    我有一个记录 看起来像 TBigint record PtrDigits Pointer lt The data is somewhere else Size Byte MSB Byte Sign Shortint class operat
  • 使用 selenium 和 python 从弹出窗口下载并保存多个 csv 文件

    我想从 下载 csv 文件 网站 我正在使用 python 和 selenium 脚本 如下所示 但我收到异常 ElementNotInteractableException 并且无法下载页面 from selenium import we
  • javax.net.ssl.SSLHandshakeException:没有适当的协议。如何强制Java使用TLSv1.2发送邮件?

    我正在尝试使用 JavaMailSender 在 Spring Boot 中发送邮件 但出现此错误 javax net ssl SSLHandshakeException No appropriate protocol protocol i
  • 如何解决grpc Deadline Exceeded错误?

    我有用go和python客户端编写的grpc服务器 有时会出现如下错误 eggs grpcio 1 0 0 py2 7 linux x86 64 egg grpc channel py line 432 in end unary respo
  • 读取spark中的字节列

    我有一个数据集 其中包含一个未知 且不友好 编码的 ID 字段 我可以使用普通 python 读取单列 并验证多个数据集中的值是否不同且一致 即它可以用作连接的主键 当使用加载文件时spark read csv 似乎 Spark 正在将列转
  • 大型 Maven 项目的存储库布局

    我有一个大型应用程序 约 50 个模块 使用类似于以下的结构 Application Communication modules 彩色通讯模块 SSN通讯模块 通讯模块等 路由器模块 Service modules Voting servi
  • 如何从颤振中的流式响应中获取响应? [复制]

    这个问题在这里已经有答案了 我正在使用 flutter 开发一个应用程序 并使用 http 库来调用我构建的 api 我想发出一个多部分请求来发送文件 它也发送它 但我无法从服务器收到任何响应 因为返回的对象是 StreamResponse
  • 如何查找违反引用完整性的记录

    我有两个表应该处于一对多关系 但表的多侧似乎有一些记录阻止创建关系 违反引用完整性 由于两个表中都有很多记录 是否有一种方法可以查询哪些记录位于多侧 而不是一侧 Ex Table 1 one side pk AccountId Table
  • Clojure STM ( dosync ) x Java 同步块

    Clojure STM dosync 方法和Java同步块有什么区别 我正在阅读 睡觉的理发师 问题中的以下代码 http www bestinclass dk index clj 2009 09 scala vs clojure roun
  • 如何在 Django 中使用新数据库重新开始?

    我删除了我的数据库 我想用一个新的数据库重新开始 我怎样才能做到这一点 我尝试创建一个新的数据源 但在应用迁移 或迁移时出现错误 无法找到表 这是真的 因为它是一个空数据库 当有人提取我的代码版本时 也会出现类似的情况 他不会有迁移或数据库
  • RMagick + Rails + Heroku?

    我想弄清楚如何在我的应用程序上使用 rmagick 然后使其在 Heroku 上运行 对于 Rails3 您必须添加此规范 gem rmagick 2 12 0 require gt RMagick 注意 要求区分大小写
  • 序言中的谓词

    我需要在 prolog 中定义一个谓词 它将一个列表作为输入 对 gt 5 的数字的平方求和 并减去 这就是我目前所拥有的 pred 0 pred Head Tail Result gr85 Head pred Tail Total Res