示例如何在序言中使用predsort(:Compare,+ List,-Sorted) [英] Example how to use predsort(:Compare, +List, -Sorted) in prolog

查看:39
本文介绍了示例如何在序言中使用predsort(:Compare,+ List,-Sorted)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要订购自定义列表.我要订购的列表将采用这种形式...

I want to order a custom list. The list I want to order will be in this form...

[n(_,2,_),n(_,1,_),n(_,3,_)]  

我写了一个比较器

cheaper(n(_,C1,_),n(_,C2,_)) :-
        C1>C2.  

如何将其与predsort一起使用.我写了一个使用冒泡排序的排序算法,但是列表很大,所以速度很慢.

How do I use this with predsort. I wrote a sorting algorithm using bubble sort, but I have very large lists so it very slow.

有可能做

predsort(cheaper, [n(_,2,_),n(_,1,_),n(_,3,_)] , X).

谢谢:)

推荐答案

尝试一下:

cheaper(>, n(_,C1,_),n(_,C2,_)) :-
        C1>C2.

cheaper(<, n(_,C1,_),n(_,C2,_)) :-
        C1<C2.

cheaper(=, n(_,C1,_),n(_,C2,_)) :-
        C1=C2.

请注意,predsort的工作原理类似于sort,没有双打!如果要保留双打,请尝试

Be aware that predsort works like sort, there are no doubles ! If you want to keep doubles, try

cheaper(>, n(_,C1,_),n(_,C2,_)) :-
        C1>C2.

cheaper(<, n(_,C1,_),n(_,C2,_)) :-
        C1=<C2.

这篇关于示例如何在序言中使用predsort(:Compare,+ List,-Sorted)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆