gpt4 book ai didi

prolog - prolog中的选择排序

转载 作者:行者123 更新时间:2023-12-01 08:50:55 27 4
gpt4 key购买 nike

我是 Prolog 的新手,我正在尝试进行选择排序。这是我所拥有的:

ssort([],[]).
ssort([M|S],L):-min(M,L),remove(M,L,N),ssort(S,N).

min(M,[M]).
min(M,[H,T]):-min(N,T),min2(M,H,N).

min2(A,A,B):-less(A,B).
min2(B,A,B):-not(less(A,B)).

less(A,B):-(A<B).

append([],B,B).
append([H|A],B,[H|AB]):-append(A,B,AB).

remove(X,L,N):-append(A,[X|B],L),append(A,B,N).

但是当我尝试这个例如:

ssort(S,[5,3,1]),write(S).

无论我尝试什么,我都会得到 false。您能告诉我如何对列表进行实际排序并获得用 S 编写的结果吗?

最佳答案

这是一种至少可以定位程序中的错误的一般方法。如果您的查询失败,只需从您的程序中删除目标。如果剩余的片段仍然失败,则该片段中一定有错误。

:- op(950,fy,*).*_.ssort(_/*[]*/,[]).ssort(_/*[M|S]*/,L):-   min(_/*M*/,L),   * remove(M,L,N),   * ssort(S,N).min(M,[M]).min(M,[H,T]):-   * min(N,T),   * min2(M,H,N).?- ssort(S,[5,3,1]).

因为这个片段失败了,你的原始程序也会失败。你需要在剩下的部分概括一些东西。

关于prolog - prolog中的选择排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42886983/

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