SWI-Prolog将列表拆分为有序减少的列表

时间:2017-05-16 14:57:41

标签: prolog

如果有人有一个将列表拆分为有序减少列表的解决方案,我将非常感激。元素的顺序必须与输入列表相同。 我在Prolog做了一些任务,但这更容易,现在我甚至不知道从哪里开始。 例如 [5,4,2,8,3,1,6,9,5] - > [5,4,2],[8,3,1],[6],[9,5]。

2 个答案:

答案 0 :(得分:0)

关于CapelliC answer,您应该可以使用几乎相同的模式匹配来降序。

答案 1 :(得分:0)

'ascending([A], [[A]]).
ascending([A,B|T], R) :-
    ( A < B -> R = [[A],P|Q] ; P = [M|N], R = [[A,M|N]|Q] ),
    ascending([B|T], [P|Q]).'