Prolog - 描述事实和规则

2024-01-12

我想在序言中描述以下事实和规则:

  1. Nick 正在使用 Java 进行编程。
  2. Nick 正在使用 Python 编程
  3. Nick 是任何使用 Java 和 Python 编程的人的朋友
  4. Jim 可以使用 Nick 所使用的所有语言进行编程。

我找到了 1、2 和 3 的解决方案,但没有找到 4 的解决方案,尽管我真的很感激完整的解决方案。

我的解决方案:

male(Nick).

male(Jim).

programming(Nick, java).

programming(Nick, python).

friends(X,Y):-
    programming(X,java),
    programming(X,python),
    programming(Y,java),
    programming(Y,python),

您的解决方案存在一些错误:

  • 一个常数(如Nick)从一个开始大写字母不是常数;而是一个变量。因此该行:

    male(Nick).
    

    说每个人都是一个male/1;你应该将其更正为:

    male(nick).
    male(jim).
    

    (同样对于programming/2顺便一提)。 此外,这似乎不是作业的一部分(?)。

  • The friends/2谓词以逗号结尾 (,) 意味着 Prolog 解析器需要更多输入,并将下一个事实视为当前子句的一部分;您应该以点结束子句 (.);

  • The friends/2谓词在语义上不正确,因为问题仅对尼克进行了陈述:因此您不能使用X作为一个人,你应该将其专业化,例如:

    friends(nick,Y):-
        programming(Y,java),
        programming(Y,python).
    

    你的版本friends/2 said: “如果 X 和 Y 都能用 Java 和 Python 编程,那么 X 就是 Y 的朋友”;尽管这导致 Nick 是每个使用 Java 和 Python 编程的人的朋友,但您的陈述超出了应允许的范围:我们不知道 Jim 是否根据这些规则决定谁是他的朋友。例如,吉姆有可能(尽管也许不太可能)想从他的朋友那里学习东西,并且例如只与至少了解一种他不掌握的编程语言的人成为朋友。

  • 最后一个问题可以写成:

    programming(jim,X) :-
        programming(nick,X).
    

    该声明的近乎机械翻译是:“Jim 正在使用 X 编程if尼克正在 X 中编程”; (请注意,这不是当且仅当);因此您仍然可以添加 Jim 可以使用的其他语言。

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

Prolog - 描述事实和规则 的相关文章

  • 在 prolog 中将浮点数转换为整数

    如何在prolog中将浮点数转换为整数 I tried integer truncate sqrt 9 false integer round sqrt 9 false 谓词integer 1你使用的是真的iff它的参数是一个整数 自任期以
  • 这是如何计算的?我试图了解 H 的值如何在列表中分配

    该谓词应该打印尺寸列表N包含可能的排列0 and 1 我的问题是 H每次递归都会结转 或者使用以下值创建列表bit H 发生在回溯阶段吗 bit 0 bit 1 gen 0 gen N H T N gt 0 bit H N1 is N 1
  • Prolog 中的条件编写

    I have Prolog包含飞机时刻表的数据库 它看起来是这样的 fly id from to days 1 0 1 0 1 0 1 正如你所看到的 有 7 个值days谓词 从星期一到星期日 我想做的是每天打印 价值所在1 但将其打印为
  • 使用 Prolog 中的累加器计算多项式的计算问题

    背景 我需要编写一个谓词 eval P A R 其中 P表示多项式系数列表 即1 2x 3x 2表示为 1 2 3 A 代表 X 的值 R 是 X A 处多项式的结果 Example eval 3 1 2 3 R 产生 R 24 编辑 之前
  • 从序言中的列表中过滤掉大量数字

    我想编写一个函数 通过删除所有小于或等于特定数字的内容来过滤数字列表 该函数将采用两个参数 数字列表和要过滤的数字 该函数应返回一个列表 其中包含大于过滤器编号的所有数字 有时像这样 filter num list L1 N L2 test
  • Prolog 中不带双精度的列表的所有组合

    有没有一种简单的方法可以获取列表的所有组合而无需双精度 没有双打我的意思是也没有彼此的排列 所以不行 a b c and c a b or c b a 因此对于输入 a b c 输出将是 a b c a b a c b c a b c 我只
  • Prolog 中的失败谓词有什么用?

    我想不出我需要它的情况 优雅的系统提供false 0作为命令式的声明式同义词fail 0 它有用的一个例子是当您想要手动强制回溯副作用时 例如 between 1 3 N format line w n N false line 1 lin
  • 函数式语言中的多线程? (序言)

    当我的朋友在学校开始学习 Prolog 时 我嘲笑他学习了一门无用的语言 然而 他向我展示了一些我从来不知道可能发生的东西 我想知道这个技术从何而来 技术是这样的 permutation List isAMember X List dele
  • AllegroGraph 检查现有三元组

    我正在使用 AllegroGraph 4 我有一个三元组存储 并且只有在新的三元组尚不存在时我才会尝试添加它们 这是我的 Prolog 查询 select news alfas news a news tst has annotation
  • Prolog,如何在 write() 中显示多个输出

    go match Mn Fn write Matching Result nl write Mn write match with write Fn match Mn1 Fn1 person may female 25 blue perso
  • Prolog - 删除非唯一元素

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

    我是 PROLOG 新手 正处于练习的开始阶段这一页 https sites google com site prologsite prolog course a first glimpse 给定规则parent X Y 和male X 我
  • Prolog 变量查询中的“\+”问题

    我正在读 七周七种语言 atm 我对一些 Prolog 查询感到困惑 我不明白对 否 的回答 The friends pl文件看起来像这样 likes wallace cheese likes grommit cheese likes we
  • 如何在 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
  • 寻找最大最小值集合

    我正在尝试编写一个 天真的或半天真的 程序 给定一组元素和许多玩家将其划分为这个数量的玩家 并且对于每个这样的划分取最小值 按总和 子集 然后 我想计算所有这些最小除法的最大值 这被称为https en wikipedia org wiki
  • SWI-Prolog 中的约束编程

    我想要一个包含三个元素 A B 和 C 的列表 L 并具有以下约束 use module library clpfd L A B C L ins 1 3 A B C 但是 它给出了一个错误 Syntax error Operator exp
  • 求解序言中极其简单的方程:A = B + C?

    我有一个非常简单的方程 我希望能够在序言中求解 A B C 我希望能够编写一个谓词来表达这种关系 它可以处理任何一个未实例化的参数 无需推广到更复杂的关系或方程 myEquation A B C something 我可以使用以下语义进行调
  • 在 prolog 中读取用户输入的字符串

    我是 Prolog 初学者 我正在使用 swi prolog 刚刚开始使用它 我需要将用户输入字符串拆分到列表中 我尝试了以下代码 但出现错误 指出 在子句正文中完全停止 无法重新定义 2 write Enter the String nl
  • Prolog 过滤自定义目标失败的所有元素的列表

    我正在尝试写一个谓词filter List PredName Result 过滤一个List目标的所有要素PredName失败并随后返回Result列表 谓词PredName 1应该在调用过程时定义filter 3例如可以是 test N
  • 斜线(/)在序言中做什么?

    我有这个代码 set value X Value X T X Value T set value X Value Y V T Y V NewT X Y set value X Value T NewT set value X Value X

随机推荐

  • 方法参数级别的 @ModelAttribute 注释的含义是什么?

    Spring 3 参考资料告诉我们 当你把它放在一个方法上时 范围 ModelAttribute映射一个 模型属性具体 带注释的方法参数 我不明白这个魔咒 因为我确定模型对象的别名 如果使用则为键值 ModelMap作为返回类型 在执行请求
  • 如何忽略已经提交的文件?

    之前 以下是我的 gitignore file config database yml DS Store 后来我创建了一个app config yml文件放在 config 目录中并提交 现在 我意识到我不需要app config ymlg
  • 无法从 onBackgroundMessage 启动 Activity

    刚刚创建了一个新的 Flutter 应用程序 最终当我收到通知时尝试打开我的应用程序或显示全屏活动 例如电话 现在只是尝试控制台登录通过后台消息处理程序调用的本机类 当我发送通知时收到此错误 您看到我做错了什么吗 我应该有不同的方法来处理这
  • SQL Server 快进游标

    人们普遍认为 应尽可能避免在存储过程中使用游标 用基于集合的逻辑等替换 如果您需要迭代某些数据 并且可以以只读方式执行 那么快进 只读前进 游标是否比 while 循环效率更高或更低 根据我的调查 光标选项通常速度更快 并且使用更少的读取和
  • 如何在 Thymeleaf 中使用 Dates.Format 和区域设置

    我正在尝试使用 Thymeleaf 中的区域设置格式化日期 我已经使用了dates format td td td td 但以上都不起作用 我基于这个已经解决的问题https github com thymeleaf thymeleaf e
  • .NET 中的货币格式

    我试图了解货币格式在 NET 框架中的工作原理 据我了解 Thread CurrentCulture NumberFormatInfo CurrencySymbol 包含当地文化的货币符号 但在我看来 在现实世界中 特定文化和货币符号之间并
  • 方法头中“静态”的含义是什么?

    我想了解 writeNumbers 方法标头中的 static 一词有何作用 public class DisplayClass param args public static void main String args writeNum
  • 接收参数并移动可能失败的函数的语义(强大的异常安全性)

    我有一个函数 可以对作为接收器参数传入的大量数据进行操作 我的BigDatatype 已经支持 C 11 并且带有功能齐全的移动构造函数和移动赋值实现 因此我可以摆脱困境 而不必复制该死的东西 Result processBigData B
  • 这段C代码有什么问题吗?

    我的源代码 include
  • 为 Java 程序制作 OSX 应用程序包,而无需用户界面在应用程序运行时保留在 Dock 中

    今天我尝试为 Java 应用程序创建我的第一个 OSX 应用程序包 它有效 但有一个问题 我找不到任何解决方案 Java 应用程序是一个没有用户界面的 Web 服务器 当我启动应用程序包时会发生以下情况 应用程序图标在 Dock 中弹跳几次
  • 查找一组垂直线段中所有不相交的交点

    我有一组由 y1 和 y2 坐标定义的垂直区域 其中 y1 是每个区域的起点 y2 是终点 我的坐标系原点是左上角 因此 y2 始终大于 y1 这是一个例子 var regions 10 100 50 120 60 180 140 220
  • 带有托管扩展框架 (MEF) 的工厂模式

    我正在尝试使用 MEF 实现工厂模式 这是我的解决方案 核心项目 IClass ObjectFactory static Class This is where the problem is 项目A Export typeof IClass
  • 删除 SQL Server 中的记录后重置身份种子

    我已将记录插入 SQL Server 数据库表中 该表定义了主键 并且自动增量身份种子设置为 是 这样做主要是因为在 SQL Azure 中 每个表都必须定义主键和标识 但由于我必须从表中删除一些记录 这些表的身份种子将受到干扰 并且索引列
  • 是否可以使用隐式证据来强制抽象类型之间的静态类型兼容性?

    假设具有以下特征 trait A type B def a A A 我使用抽象类型是因为我不想每次需要 A 时都在类型签名中拖动 B 是否仍然可以向 方法添加任何隐式证据 使用 我的第一反应是拒绝 但 scala 之前就给我带来了惊喜 任何
  • Spring Integration - 当服务激活器组件中发生异常时写入错误队列

    我开始使用 Spring 集成 如果可能的话 我不知道如何解决这种情况 我想自动 捕获 应用程序的服务激活器中可能发生的每个异常 并将此错误发送到专用队列 网关不是一个解决方案 因为我需要一些自定义代码 所以如果我正确理解了原理 我必须使用
  • 使图像文件在 Lollipop 上的 Android Gallery 中可见

    我试图使应用程序中拍摄的一些照片在图库中可见 以便可以在应用程序外部共享和查看它们 但我想将图像本身保留在应用程序的数据目录中 以便当应用程序被删除 它们被删除 因此它们存储在 sdcard Android data appID 图片 子文
  • Flutter 嵌套 JSON 解析

    我这里有一个嵌套的 JSON api Employee Name Michael Jackson Identification 881228145031 Company Test Corporate DateOfBirth 1988 12
  • Gettext 不起作用,没有错误消息,使用 php 5.3

    我已经在这件事上摸索了好几天了 但没有成功 我只是想让 gettext 工作 发生的情况是打印 php 文件中写入的字符串 而不是翻译后的字符串 IE 如果我做 echo gettext Service 然后打印 Service 而不是瑞典
  • Visual Studio 2008 中缺少 T4 代码生成?

    所以我决定卷起袖子尝试一下 VS2008 内置的 T4 代码生成 我打算继续写这篇文章 http www olegsych com 2008 09 t4 tutorial creatating your first code generat
  • Prolog - 描述事实和规则

    我想在序言中描述以下事实和规则 Nick 正在使用 Java 进行编程 Nick 正在使用 Python 编程 Nick 是任何使用 Java 和 Python 编程的人的朋友 Jim 可以使用 Nick 所使用的所有语言进行编程 我找到了