Prolog 检查列表中的第一个元素是否不相等且列表中的第二个元素是否相等

2024-02-01

我想比较两个列表,第一个元素不应该相等,第二个元素应该相等。

示例数据库:

likes(josh,muse).
likes(sam,muse).
likes(josh,gnr).
likes(sam, radiohead).

所以它应该为 same([josh,muse], [sam,muse]) 返回 true。

这是我到目前为止所尝试的:

same([H1|R1], [H2|R2]):-
    H1 \= H2,
    same(R1,R2).

对于每个组合,这都会返回 false。


The [Head|Tail]您在定义中使用的列表的 Prolog 表示法same/2谓词提供对列表的访问head and tail。列表的尾部本身就是一个(可能是空的)列表。但在你的情况下,你想访问第一个和第二个元素,你可以通过编写[First, Second| _](即通过枚举用逗号分隔的元素;这里我使用匿名变量对于尾巴,因为我们不需要它,因此我们可以忽略它)。

您的谓词可以通过将其重写为来修复:

same([F1,S1|_], [F2,S2|_]):-
    F1 \== F2,
    S1 == S2.

如果您知道参数始终是包含两个元素的列表,则可以将谓词简化为:

same([F1,S1], [F2,S2]):-
    F1 \== F2,
    S1 == S2.

调用示例:

?- same([josh,muse], [sam,muse]).
true.

?- same([sam,muse], [sam,muse]).
false.

?- same([josh,muse], [sam,maria]).
false.

最后一点,你的问题是关于术语平等但在您的解决方案尝试中您正在使用术语统一。它们具有不同的语义,不应混淆。

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

Prolog 检查列表中的第一个元素是否不相等且列表中的第二个元素是否相等 的相关文章

  • 如何将列表转换为元组列表?

    我想转换 z z a z z a a z to z 2 a 1 z 2 a 2 z 1 我该怎么做 所以 我需要累积以前的值 它的计数器和元组列表 我已创建记录 record acc previous counter tuples 重新定义
  • 分配列表的多个值

    我很想知道是否有一种 Pythonic 方式将列表中的值分配给元素 为了更清楚 我要求这样的事情 myList 3 5 7 2 a b c d something myList So that a 3 b 5 c 7 d 2 我正在寻找比手
  • 检查子字符串是否在字符串列表中?

    我之前已经找到了这个问题的一些答案 但它们对于当前的Python版本来说似乎已经过时了 或者至少它们对我不起作用 我想检查字符串列表中是否包含子字符串 我只需要布尔结果 我找到了这个解决方案 word to check or wordlis
  • 如何在 Haskell 中制作打勾游戏的图案?

    实现有 2 个参数的函数 ticktick 第一个参数是自然数元组 定义游戏场地的行数和列数 第二个列表包含由玩家 x 和玩家 o 轮流玩的坐标给出的井字游戏比赛的记录 打印游戏的实际状态 其中游戏区域将由字符 和 界定 空方块 以及字符
  • 使用 LINQ 洗牌

    我正在尝试编写一个简单的纸牌游戏 为了想出一个好的洗牌算法 我遇到了 Jeff Atwood 的post http www codinghorror com blog 2007 12 shuffling html关于恐怖编码 但是 当我在调
  • 如何在 flutter 中仅显示列表中的 5 项

    我想在 flutter 中显示一个列表 我正在使用listView 问题是我只想显示 5 个项目 我的意思是当用户向下滚动时我想从开始索引中删除并将另一个小部件添加到包含我的小部件的列表的末尾 但是当我这样做时ScrollView 不会停留
  • 两个布尔列表之间的逻辑运算

    我得到了一个奇怪的结果 我尝试应用and or the orpython 中 2 个布尔列表的运算符 事实上 我得到的结果与我的预期完全相反 True False False and True True False gt True True
  • scala 返回列表中的第一个 Some

    我有一个清单l List T1 目前我正在执行以下操作 myfun T1 gt Option T2 val x Option T2 l map myfun l flatten find gt true The myfun函数返回 None
  • 如何在Python中按AaB而不是ABa顺序对字符串进行排序

    我正在尝试对字符串进行排序 为 punnetsquare 制作基因型 我目前的实现是 unsorted genotype ABaB sorted genotype sorted list unsorted genotype sorted s
  • 使用 LINQ 通过一个属性比较两个列表

    假设我有以下内容 class Widget1 public int TypeID get set public string Color get set class Widget2 public int TypeID get set pub
  • 如果两点之间的距离低于某个阈值,则从列表中删除点

    我有一个点列表 只有当它们之间的距离大于某个阈值时 我才想保留列表中的点 因此 从第一个点开始 如果第一个点和第二个点之间的距离小于阈值 那么我将删除第二个点 然后计算第一个点和第三个点之间的距离 如果该距离小于阈值 则比较第一点和第四点
  • 大多数列表共有的项目

    给定一个列表列表 假设有 5 个列表 以便有一个可以使用的实数 我可以相对轻松地找到所有 5 个列表所共有的项目 请参阅使用 IEnumerable Intersect 求多个列表的交集 https stackoverflow com qu
  • Prim 的迷宫生成算法:获取相邻单元格

    我基于 Prim 算法编写了一个迷宫生成器程序 该算法是 Prim 算法的随机版本 从充满墙壁的网格开始 选择一个单元格 将其标记为迷宫的一部分 将单元格的墙壁添加到墙壁列表中 While there are walls in the li
  • Python:如何在不先创建整个列表的情况下计算列表的总和?

    通常我们必须 1 声明一个列表 2 使用以下方法计算该列表的总和sum 但现在我希望指定一个以 1 开头 间隔为 4 100 个元素的列表 如下所示 1 5 9 13 17 21 25 29 33 37 我不想涉及数学公式 所以 1 如何在
  • 按元组分隔符拆分列表

    我有清单 print L I WW am XX newbie YY ZZ You WW are XX cool YY ZZ 我想用分隔符将列表拆分为子列表 ZZ print new L I WW am XX newbie YY ZZ You
  • 如何将嵌套列表切片两次?

    使用嵌套列表 例如 ex list 1 2 3 4 5 6 7 8 9 我需要能够将此列表分割为 1 2 4 5 我一直在尝试 list ex list 2 2 但这不起作用 我显然做了一些非常错误的事情 但一直无法找到解决方案 因为由于某
  • 如何在 Python 中创建多个(但单独的)空列表?

    我编写了一个脚本 该脚本有时会生成一堆空列表 应用具有以下结构的代码 A B C D 产生输出 A B C D 现在的情况是 每次使用不同的数据集作为输入时 我都必须手动修改字母 我希望能够实现自动化 我想过这样做 FieldList A
  • 返回列表的前 n 个

    如何返回第一个n列表的元素 这是我所拥有的 define returns lambda list n cond null list 0 n n 1 car list cons car list returns cdr list n else
  • 根据另一个列表的顺序对列表进行排序[重复]

    这个问题在这里已经有答案了 我需要对列表进行排序Person对象 List
  • Prolog 中的隔离列表

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

随机推荐

  • 使用 rxjs 处理刷新令牌

    自从我开始使用 angular2 以来 我已经设置了我的服务来返回 T 的 Observable 在服务中 我将进行 map 调用 并且使用这些服务的组件将仅使用 subscribe 来等待响应 对于这些简单的场景 我真的不需要深入研究 r
  • 从 JavaScript 加载图像

    在我的 Grails 应用程序中 我有一个目录web app images carousel slides包含以下文件 foo png foo thumbnail png bar png bar thumbnail png 我的应用程序正在
  • 如何以惯用的方式计算有多少元素满足条件?

    有了这些数据 gt data 1 1290603356 1290603360 1290603350 1290603344 1290603340 1290603373 7 1290603354 1290603359 1290603345 12
  • QGLWidget 在 Mac OS X Lion 下无法正常工作

    正如你所看到的 我不知道为什么它根本不起作用 When the program run it will look like this 我正在使用 macports 的 qt4 mac v4 8 2 看来该包是预编译的 这是来源 主要 cpp
  • 控制器中的 GGTS 重复方法名称/签名错误

    我正在使用基于 eclipse 4 3 1 64 位版本的最新 GGTS v3 4 在 Grails 2 3 2 上开发应用程序 我的类路径中的每个控制器都有一个错误 每个控制器类都有两个相同的错误 Groovy 类 package Som
  • django 模板中的逗号分隔列表

    If fruits是列表 apples oranges pears 有没有一种使用 django 模板标签快速生成 苹果 橙子和梨 的方法 I know it s not difficult to do this using a loop
  • 如何处理函数数组中的重复函数调用?

    我正在尝试按顺序执行以下函数 同步 异步 数组 避免callbackHell 实现函数runCallbacksInSequence 我需要实现自己的函数来了解回调的工作原理并避免使用 Async js 这是我到目前为止所拥有的 功能runC
  • 在 pandas 数据框替换功能中使用正则表达式匹配组

    我刚刚学习 python pandas 喜欢它的强大和简洁 在数据清理期间 我想使用正则表达式对数据框中的列进行替换 但我想重新插入匹配的部分 组 简单示例 姓氏 名字 gt 名字 姓氏 我尝试了类似以下的内容 实际情况更复杂 所以请原谅简
  • Hyperledger Fabric 了解 MSP

    我想清楚MSP的用途 所以我的问题是 当用户出于任何原因想要使用某个通道时 本地 MSP 会为其提供一个带有私钥的身份 在文档中说 MSP 有一个密钥库 并且在通道确认用户使用该通道 MSP 后 CA何时参与 None
  • 查询字符串是否有类似 hashchange 的事件?

    我一直在使用哈希值在页面之间传递数据 例如设置scrollTop 等 并且还使用了hashChange触发给定页面上的更改的事件 然而 哈希值具有我不一定感兴趣的默认行为 例如使页面跳转到给定的 有时是无关紧要的 位置 我觉得获取 设置查询
  • 游戏路径寻找

    所有类型的游戏中都使用哪些路径查找算法 无论如何 在角色移动的所有类型中 迪杰斯特拉 Dijkstra 曾经被使用过吗 我并不是真的想编写任何代码 只是做一些研究 不过如果你粘贴伪代码或其他东西 那就没问题了 我可以理解 Java 和 C
  • Spyder互动剧情:等待剧情关闭继续

    我使用 Spyder 在 Windows 上工作 使用 matplotlib 进行绘图 我的问题是我想要进行交互式绘图 或者有时绘制很多东西 并且我希望spyder等待我关闭图形以继续代码 与传统终端相同的方式 我试过 plt ion mp
  • Linux 中的堆栈内存管理

    我有几个与 Linux 堆栈大小限制相关的问题 我对 x86 64 系统最感兴趣 但如果存在平台差异 我也想了解它们 我的问题是 1 Linux如何动态增加堆栈的大小 我编写了一个带有递归函数 以使用堆栈空间 的测试程序 我可以在其中指定迭
  • 在 Django 中,如何覆盖“保存并继续”功能?

    我需要向 ModelAdmin 添加一些保存前和保存后逻辑 但仅当用户通过 保存并继续编辑 按钮而不是 保存 按钮提交表单时 我怎样才能做到这一点 就像重写普通的保存方法一样 您需要重写save model ModelAdmin 中的函数
  • 将所有相对 URL 替换为绝对 URL

    我看过一些答案 比如this one https stackoverflow com questions 31347340 convert all relative urls to absolute urls while maintaini
  • 将 textGrob 转换为 imageGrob/rasterGrob?

    如果这非常简单 我深表歉意 其实我希望会是这样 我正在尝试从文本动态创建图像 然后可以调整图像的大小并绘制 拉伸或挤压 以生成主题类型的图表 我开始使用图像 我使用生成的png and ggplot 并将它们绘制为annotation cu
  • 追加内的 for 循环不起作用

    下面是我的代码 table table cellspacing 0 cellpadding 0 border 0 width 100 append append function options ONE TWO THREE FOUR eac
  • SSIS:如何在数据流任务中运行存储过程

    我有一个执行此操作的数据流任务 从 OLE DB 源中 运行 SQL 命令来选择一些数据 查找不同的 SQL DB 源 检查数据是否已存在 根据查找匹配输出与查找不匹配输出 使用不同的输入参数运行存储过程 输入参数将基于 2 中的 可用查找
  • 在Mac OS X系统上快速创建大文件?

    为了创建 10 GB 临时文件 在 Linux 中你可以这样做 fallocate l 10G temp 10GB file 在 Windows 中 您可以执行以下操作 fsutil file createnew temp 10GB fil
  • Prolog 检查列表中的第一个元素是否不相等且列表中的第二个元素是否相等

    我想比较两个列表 第一个元素不应该相等 第二个元素应该相等 示例数据库 likes josh muse likes sam muse likes josh gnr likes sam radiohead 所以它应该为 same josh m