2015-12-09 58 views
1

我的測試案例使用分解

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). 

我知道我們能解決這個問題幾種方式移調Prolog中的矩陣。我想如何解決我的代碼在下面的問題。

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

顯然,當我收到列表清單時,代碼會中斷。我如何處理這個問題。

回答

2

,直到它失敗你trans/2總是遞歸調用自己。它缺少一個基本案例。也許你可以試試:

trans([[]|_], []). 
+0

似乎並沒有工作 –

+0

加入我建議你的代碼的規則之後,這似乎工作:'反式([1,2],[3,4], [[1,3],[2,4])'。你期待有什麼不同嗎? – AtnNn