您将如何在 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/