使用Prolog规则在查询中显示给定列表的第一个元素?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Prolog规则在查询中显示给定列表的第一个元素?相关的知识,希望对你有一定的参考价值。
这是关于范式试卷的一个问题的第二部分,我正在努力解决这个问题,这让我有点难过,但后来我仍然是一个相当的prolog noob所以解决方案可能很明显..
我写了这个规则/事实contains1(X, [X|_]).
来检查给定元素是否等于给定列表的头部。这很好,它按预期工作,从我所有的阅读中我可能95%肯定这是最好的方式去做。但后来问题还说是使用此规则编写一个prolog查询来显示给定列表中的第一个元素。
我正在使用swi-prolog来输入和测试我的所有规则等,我知道如何让它显示给定列表的第一个元素的唯一方法是使用查询[H|T] = (some_list)
。那么我究竟如何将自己的规则运用到这个......?欢迎任何帮助或正确方向的一点,非常感谢。
答案
让prolog找出X的值使该子句有效:
contains(X, sample_list).
例如,
contains(X, [1, 2, 3]).
将返回X = 1
,因为当X = 1
,那么该条款是真的。
请记住,当给出这样的子句时,Prolog将尝试查找X的所有值,以使该子句成为真。
以上是关于使用Prolog规则在查询中显示给定列表的第一个元素?的主要内容,如果未能解决你的问题,请参考以下文章