Pet*_* D. 3 prolog program-slicing
我是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).
Run Code Online (Sandbox Code Playgroud)
但是当我尝试例如
ssort(S,[5,3,1]),write(S).
Run Code Online (Sandbox Code Playgroud)
false无论如何,我都能理解。您能告诉我如何实际排序列表并将结果写入其中S吗?
这是一种通常的方法,至少可以在程序中定位错误。如果查询失败,只需从程序中删除目标。如果其余片段仍然失败,则该片段中必须有一个错误。
:-op(950,fy,*)。 * _。 ssort(_ / *[]* /,[])。 ssort(_ / *[M | S]* /,L):- min(_ / *M* /,L), *删除(M,L,N), *ssort(S,N)。 min(M,[M])。 min(M,[H,T]):- *分钟(N,T), *min2(M,H,N)。 ?-ssort(S,[5,3,1])。
由于此片段失败,因此原始程序也会失败。您需要在其余部分中概括一些内容。
| 归档时间: |
|
| 查看次数: |
1346 次 |
| 最近记录: |