gpt4 book ai didi

prolog - 传递 Prolog 谓词的结果

转载 作者:行者123 更新时间:2023-12-01 08:16:33 25 4
gpt4 key购买 nike

如何评估作为参数传递的序言谓词的结果?
我正在尝试编写代码来反转列表中的元素对:

swap([A,B,C,D,E,F],R).

我想要结果:
[B,A,D,C,F,E]

但我得到了这个结果:
append(append(append([],[B,A],[D,C],[F,E])))

这是我的代码:
swap(L,R) :- swapA(L,[],R).
swapA([],A,A).
swapA([H,H2|T],A,R) :- swapA(T, append(A,[H2,H]), R).

谢谢。

最佳答案

几件事:

  • 变量以大写字母开头,如果要将原子与变量区分开,请将其包裹在 ' 之间:['A','B','C','D','E','F']
  • 您不需要 append 即可成功实现此谓词。使用 append 时,复杂性要差得多。
  • 因为不需要追加,所以也不需要 3 个参数,2 个就足够了

  • 这是一个建议:
    swapA([], []).
    swapA([X, Y|T], [Y, X|R]) :- swapA(T, R).

    如果您希望在列表中有奇数个元素时保持谓词,请考虑添加另一个基本情况:
    swapA([X], [X]).

    关于prolog - 传递 Prolog 谓词的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9764612/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com