在SWI prolog中实现nth1列表操作

2024-02-27

您将如何在 Prolog 中编写您自己的谓词,以准确执行 nth1 函数的功能?

对于那些不熟悉该功能的人,可以通过一个示例来最好地展示其功能:

?- nth1(2, [a,b,c], E, R)。

E = b

R = [a,c]

当调用 nth1 函数时,传递以下内容: - 一个元素的索引,该元素将从列表中删除(注意它不是零索引,这里我们传递索引 2) - 列表(在本例中为 [a,b,c]) -E,将分配从列表中删除的元素 - R,一个新列表,它将保存新列表减去被删除的一个元素。

我不知道如何开始。任何意见,将不胜感激。我知道在 SWI-Prolog 中使用递归大约 3 或 4 行应该可以做到,我只是不知道从哪里开始。


查看此链接 http://search.cpan.org/dist/AI-Prolog/lib/AI/Prolog/Cookbook.pod#Pick_a_list_member_by_index这基本上应该给你答案。为了让您开始,请考虑您的基本情况,应该是

 nth1(1, [E|R], E, R).

现在你如何通过递归这个想法来编写其他案例?实际上,这只是掌握 Prolog 列表语法的问题。

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

在SWI prolog中实现nth1列表操作 的相关文章

随机推荐