小编And*_*rew的帖子

swi-prolog:如何按子列表的NTH元素对列表进行排序,允许重复

(我使用'asserta'将带有多个列的大型csv文件放入数据库中.)有没有办法按列进行数字排序而不删除重复项?

正如您从我的简单示例(按第二列/元素排序)中所看到的,predsort方法可以删除重复项.

我可以通过切换和删除一些列并使用msort来解决这个问题,但我在这里特别要求您提供替代方案.

任何建议将非常感谢!

mycompare(X,E1,E2):- 
E1=[_,A1],E2=[_,A2],compare(X, A1, A2).

?- predsort(mycompare,[ [[95, 97], 11], [[97, 99], 4], [[97, 98], 4]],X).
X = [[[97, 99], 4], [[95, 97], 11]].

?- msort([ [[95, 97], 11], [[97, 99], 4], [[97, 98], 4]],X).
X = [[[95, 97], 11], [[97, 98], 4], [[97, 99], 4]].

%What I want is:
?- wanted_sort(...<as above>...).
X = [[[97, 98], 4], [[97, 99], 4], [[95, 97], 11] ].
Run Code Online (Sandbox Code Playgroud)

sorting list prolog

5
推荐指数
1
解决办法
1611
查看次数

标签 统计

list ×1

prolog ×1

sorting ×1