使用分解

时间:2015-12-09 04:17:49

标签: prolog

我的测试用例

trans([[1,2],[3,4],[5,6]], R).
R = [[1,3,5],[2,4,6]] ;
No

我在下面写的代码转换我的矩阵

list_head_tail([H|T], H, T).
decompose(X, L1, L2) :-
   maplist(list_head_tail, X, L1, L2).

trans(X,[L1|R]):-
    decompose(X,L1,L2),
    trans(L2,R).

我知道我们可以通过几种方式解决这个问题。我想如何解决我的代码在下面破解的问题。

Exit: (8) decompose([[1, 2], [3, 4], [5, 6]], [1, 3, 5], [[2], [4], [6]]) ? creep
Call: (8) trans([[2], [4], [6]], _G15907) ? creep

显然,当我收到列表列表时,代码会中断。我该如何处理。

1 个答案:

答案 0 :(得分:2)

你的trans/2总是以递归方式调用自身直到失败。缺少一个基本案例。也许尝试类似的事情:

trans([[]|_], []).
相关问题