gpt4 book ai didi

Prolog - 在特殊情况下消除重复答案的更好方法?

转载 作者:行者123 更新时间:2023-12-04 20:21:50 24 4
gpt4 key购买 nike

我在这两行中遇到了麻烦:

list_swizzle(L, [], L).
list_swizzle([], L, L).

问题是,如果前两个参数都是空列表,则前两个语句都将被使用,返回相同的答案。然而,如果我把一个切入点,它会破坏回溯。我最终把这一行放在他们上面:
list_swizzle([], [], []):- !.

它有效。但我想知道是否有更优雅的解决方案。

最佳答案

这是我的版本:

list_swizzle([H|T], [], [H|T]).
list_swizzle([], L, L).

我指望 [] 在第一个事实中不统一反对 [H|T]。换句话说, [] 没有 T 因为它是空列表,所以第一个事实与第一个参数中的 [] 目标不匹配。

我已经在 SWI-Prolog(多线程,32 位,版本 5.8.2)上成功运行了这个
$ cat tt.pl

s([H|T], [], [H|T]).
s([], L, L).

....
For help, use ?- help(Topic). or ?- apropos(Word).

?- [tt].
% tt compiled 0.00 sec, 920 bytes
true.

?- s(L,[],[]).
L = [].

?-
% halt

关于Prolog - 在特殊情况下消除重复答案的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5690827/

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