list - 在SWI prolog中实现nth1列表操作

标签 list prolog predicate

您将如何在 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 行应该可以做到,我只是不知道从哪里开始。

最佳答案

Check out this link这基本上应该给你答案。首先,请考虑您的基本情况,应该是

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

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

关于list - 在SWI prolog中实现nth1列表操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9797238/

相关文章:

基于 Prolog 的解释器

python - 标记字符串列表以返回一个标记化单词列表

prolog - 从左到右获取列表的产品

python - 如何添加2个列表python的int元素

list - 序言检查表

cocoa - 为什么这个 NSPredicate 不起作用?

list - Lisp 从列表中删除数据

c++ - 为什么 C++ 关联容器谓词默认不透明?

list - 根据列表中的值对列表元素进行分组

r - 计算列表中元素的平均值