查找 prolog 程序给出错误结果的查询

2023-12-03

此 Prolog 程序将第三个参数定义为前两个数字参数的最大值:

max(X, Y, X) :- X >= Y, !.
max(X, Y, Y).

我认为这个程序运行得很好。但我被告知它可能会给出错误的结果。你能说出什么时候以及为什么吗?


这是教科书上的例子。

?- max(5,1,1).
true.

作业:程序为什么错了?我们怎样才能使程序正确呢?

EDIT

max(X, Y, X) :- X >= Y, !.
max(X, Y, Y).

我们的意图是说:

如果 X 大于 Y,then最大值是X。否则, 最大值必须为 Y。

相反,所说的是:

当第一个和第三个参数(X 和 Max)可以统一,并且 X 大于 Y 时,成功。否则,如果第二个和第三个参数(Y 和 Max)可以统一,则成功。

那么明显的问题就出现了,第一和第三个论点不能统一,但第二个和第三个可以统一。

Instead:

max(X, Y, X) :- X >= Y.
max(X, Y, Y) :- X < Y.

or

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

查找 prolog 程序给出错误结果的查询 的相关文章

  • 从每个子集中选择最大值

    我在这里敲头 我觉得自己很愚蠢 因为我确信我以前做过类似的事情 但我一辈子都不记得是怎么做的 我想那一天 gt 假设我有以下数据 gt 和一个返回此数据的查询 gt 但我想要这个 ID FirstID ID FirstID ID First
  • 在 SWI Prolog 中使用 process_create/3 使用命令提示符或 shell 时出错

    在 Windows 7 上 当我在 SWI Prolog 中使用 process create 3 打开 Notepad exe 等应用程序时 记事本将打开 但是 它不适用于使用命令提示符的应用程序 例如 当我尝试打开命令提示符窗口时 使用
  • Prolog中如何选择bagof、setof和findall

    如何在 bagof setof 和 findall 之间做出选择 有什么重要的区别吗 哪个最常用 哪个最安全 感谢您的评论 回答 我检查了SWI Prolog 手册页findall 3 http www swi prolog org pld
  • 查找相邻成员

    我必须找出列表中的两个成员是否相邻 限制是使用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
  • NSString 对象的最大长度是多少?

    NSString 对象中可以保存的最大字符串大小是多少 这会动态变化吗 我假设 NSString 的硬限制是 NSUIntegerMax 个字符 因为 NSString 的索引和大小相关的方法返回 NSUInteger 由于当前能够运行 i
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • 变量的多个值介于 0 和数字序言之间

    所以我一直在尝试自学序言 我认为我进展顺利 然而 我有点坚持我正在尝试的这一种方法 toN N A A 等于 0 到 N 1 之间的整数值 按升序生成 所以 toN 5 A 将是 A 0 A 1 A 2 A 3 A 4 我对序言还很陌生 所
  • 将行读取到序言中的原子列表

    我需要将任何行 来自 user input 读入原子列表 例如 Example line which contains any ASCII chars into Example line which contains any ASCII c
  • ORACLE SQL 中的 MAX()

    我有一个表 存储已完成的维护任务的记录列表以及完成的日期和时间 我正在尝试执行子查询来提取具有最新日期的每个任务的记录 我的SQL语句是 SELECT ENGINEERING COMPLIANCE EO AS EO ENGINEERING
  • 检查 SQL MAX() 函数返回 null

    我的问题是 如果我的表为空或者我使用 max 函数的列没有我指定的值 那么为什么 sqlDataReader hasRows TRUE 它给出了空记录 我该如何解决这个问题 提前致谢 像 MAX 这样的聚合函数将始终为每组返回一行 就您而言
  • Scipy max_filter 太疯狂了

    我对 scipy 的 Maximum filter 函数有一个小问题 但没有得到解决方案 我有三个不同的 numpy 数组 a np array 152 nan 30 nan nan nan nan nan nan nan nan nan
  • 具有最大高度和滚动的动态内容的对话框+页脚CSS

    我有一个dialog with 位置 绝对 and a 最大高度放 这最大高度财产是set从外面by a javascript框架 jQuery UI 对话框 所以我无法控制它 里面有 2 个 div 其中一个充满了动态内容 and a 静
  • Prolog 谓词参数中实例化模式指示符的含义

    查看Prolog文档 谓词签名有时会写成如下 foo Bar Baz Qux Mop 什么是 and 我该如何解释它们 另外 这些是唯一存在的还是还有更多 在这种情况下 这些前缀运算符代表实例化模式 即它们告诉您哪些参数应该是变量或在调用谓
  • 简单的布尔表达式测试

    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
  • c++ 最大 std::string 长度由堆栈大小或堆大小决定?

    正如问题中所问 std string myVar 它可以容纳的最大字符是由堆栈还是堆决定的 谢谢 默认情况下 分配的内存为std string是动态分配的 注意std string has a max size 函数返回实现支持的最大字符数
  • 如何在 Django 中执行 SELECT MAX?

    我有一个对象列表 如何运行查询来给出字段的最大值 我正在使用这段代码 def get best argument self try arg self argument set order by rating 0 details except
  • Prolog - DCG 解析器,带有来自文件的输入

    作为项目的一部分 我需要编写一个解析器 它可以读取文件并解析为我可以在程序中使用的事实 文件结构如下所示 property el1 el2 我最终想要的是 property el1 property el2 我这样读我的文件 main op
  • Prolog 中的子集

    我正在寻找一个像这样工作的谓词 subset 1 2 3 X X X 1 X 2 X 3 X 1 2 X 1 2 3 X 2 3 我见过一些subset实现 但当您想要检查一个列表是否是另一个列表的子集时 而不是当您想要生成子集时 它们都会
  • 获取每日数据帧的每月最大值以及相应的索引值

    我已经从雅虎财经下载了每日数据 Open High Low Close Volume Date 2016 01 04 10485 809570 10485 910156 10248 580078 10283 440430 116249000

随机推荐

  • SonarQube:扫描过程忽略 lcov.info

    我正在扫描ui项目 源代码位于typescript gulp test coverage产生 js文件 然后扫描其覆盖范围 每个 ts文件得到一个 js文件就在它旁边 在同一位置 我将扫描仪指向lcov info文件如下 sonar jav
  • jssor 与 Angular 2 Typescript

    我正在使用 Angular 2 开发一个网站 此时 我已经购买了 Jssor 的订阅 以便为运行到同一页面的 3 个以上单独的滑块生成图像滑块 我当前的问题是文档加载后生成的动态滑块 但未显示 我在 npmjs com 中找到了 jssor
  • 如何在R中绘制完整的图?

    我想在 R 中绘制完整的图表 我怎样才能做到这一点 我在 CRAN 上发现只有一个包具有生成完整图表的功能 但是这个包 即 RnavGraph 没有安装 而是以错误状态退出 进一步搜索似乎很困难 因为图的含义不同 图不仅与图结构相关 而且还
  • 修改颜色选择器面板

    我正在创建一个颜色选择器 需要修改其中一个颜色选择器面板 我想要的是 我想通过 RGB 字段输入输入值来设置颜色 问题是 RGB 值似乎被禁用 api 中是否有一种方法可以打开 RGB 输入以获取值 这里看起来不错 import javax
  • CSS3 中是否有相当于 jQuery 的 :first 选择器?

    我有以下标记 div class a div div class b div div class b div div class b div div class c div 我正在尝试瞄准first and last div 与类b 如果我
  • Firebase 9 + NextJS 12 - 预计 collection() 的第一个参数是 CollectionReference、DocumentReference 或 FirebaseFirestore

    我正在尝试在 NextJS 应用程序中创建一个简单的 Firestore 数据库查询 I have clientApp ts看起来像这样 import firebase compat auth import firebase compat
  • 将锁定的 std::unique_lock 移交给新线程

    考虑下面的例子 我创建了一个std mutex 锁定它 然后将锁交给另一个线程 include
  • 结构需要一生,因为?

    每条语句都标有 希望得到断言 我只是慢慢地度过一生 由于生命周期省略有助于省略明确描述生命周期 有些情况我们需要描述它们 一个示例可能是包含引用的结构 struct Person
  • 空手道 UI - 并行运行场景会引发错误“HttpHostConnectException:连接到 localhost:9222”

    我正在尝试使用以下方法执行包含 3 个场景的功能 Results results Runner parallel tagQuery featurePaths null new ArrayList lt gt 3 karateOutputPa
  • Android - 将下载的图像从 URL 保存到 SD 卡上

    我在单击按钮时从 URL 加载图像 并将其存储为位图 现在我想知道如何将下载的图像保存到 SD 卡以及系统中 我尝试按以下方式进行操作 package com v3 thread fetchImage import java io File
  • 我可以让 WPF 为覆盖元素和被覆盖元素设置 IsMouseOver 吗?

    简化的例子是这样的 想象一下由两个重叠的元素 A 和 B 组成的维恩图 如果我将鼠标悬停在 A AND NOT B 上 则所有 A 都会亮起 如果我将鼠标悬停在 B AND NOT A 上 则所有 B 都会亮起 如果我将鼠标悬停在 A 和
  • jQuery Ajax 对 Web 服务的调用似乎是同步的

    我有两个来自 jquery 对 Web 服务的 ajax 调用 第一次通话 GetMessages 在 javascript 中开始一个间隔 setInterval 并返回存储在会话变量中的消息字符串数组 第二次调用 UploadUsers
  • 使用 eclipse 和 tomcat 7 运行和部署 servlet

    我创建了一个基于的测试项目Tomcat HelloWorld Servlet 与 Eclipse 并尝试像 Tomcat 7 一样从 Eclipse 运行它 我已将其配置为在 127 0 0 1 上运行 但我得到Page cannot be
  • Octave (Matlab) 中复杂函数的域着色(色轮)图

    我明白那个域或色轮绘图是复杂函数的典型特征 令人难以置信的是 我无法在网络搜索中找到超过一百万个返回来轻松地让我在维基百科中复制一些艺术作品 有这个在线资源再现黑色零的图 一点也不坏 但是 我想在 Octave 中请求一些简单的带注释的代码
  • 添加参考文献

    如何以编程方式添加程序集 DLL 作为 C 项目中的引用 我需要在运行时添加引用 考虑一下我的项目是否使用另一个类库 DLL 那么我需要将该 DLL 添加为我的项目中的引用 我怎样才能在运行时做到这一点 我猜你想在运行时加载类型 您可以使用
  • 如何解决java.lang.IndexOutOfBoundsException:无效索引0,大小为0?

    我有两个自动完成文本视图 在第一个自动完成文本视图中 我使用 json 从服务器获取项目 以下是对此的响应 status success clientlist cid 1 name margi cid 2 name steven produ
  • WPF ComboBox,强制输入大写

    我有一个带有 TextSearchEnabled 的可编辑 WPF ComboBox 当用户键入以过滤组合框时 我需要强制用户的文本输入为大写 我正在考虑修改作为控件一部分的文本框 名为 PART EditableTextBox 来设置字符
  • 在没有自动 setter/getter 的情况下在 C# 中设置列​​表项

    我正在尝试在 C 中创建手动 setter getter 方法 但我从 set 行收到以下错误 错误 System Collections Generic ListPackage Add Package 的最佳重载方法匹配有一些无效参数 p
  • 松开按键后立即停止角色

    我正在尝试制作一个简单的角色控制器 void Update var x Input GetAxis Horizontal Time deltaTime 6 var z Input GetAxis Vertical Time deltaTim
  • 查找 prolog 程序给出错误结果的查询

    此 Prolog 程序将第三个参数定义为前两个数字参数的最大值 max X Y X X gt Y max X Y Y 我认为这个程序运行得很好 但我被告知它可能会给出错误的结果 你能说出什么时候以及为什么吗 这是教科书上的例子 max 5