2014-09-19 33 views
0

的列表的順序我有變量之間的替代列表和值 它們在列表[[x,y],[1,2]]呈現(意味着的x值等於1,並且y值等於2)。 我想將列表更改爲對的列表,其含義爲[[x,1],[y,2]], 我試圖使用append,以便我將在遞歸的每一步中創建一對並將其添加到新列表中,但我有問題(主要是選擇每一對的頭部和尾部)如何更改名單

+0

您可以在解決方案中顯示您的嘗試嗎?或者只是使用[轉置/ 2](http://www.swi-prolog.org/pldoc/man?predicate=transpose/2)。 – lurker 2014-09-19 16:25:43

+1

可能的重複[如何轉置矩陣在序言](http://stackoverflow.com/questions/4280986/how-to-transpose-a-matrix-in-prolog) – lurker 2014-09-19 16:29:38

+0

@ lurker:呵呵,你是多麼的正確! – false 2014-09-19 16:35:19

回答

0

你的例子有點做作,但轉置它有點矯枉過正,特別是如果你要實現自己。我認爲這應該可以解決您的需求

'change an order of list of lists'([X_Y_Z, A_B_C], XA_YB_ZC) :- 
    findall([K, V], (nth1(I, X_Y_Z, K), nth1(I, A_B_C, V)), XA_YB_ZC).