0

I have a list of substitutions between variables and values they are presented in a list [[x,y],[1,2]] (meaning that the value of x equals 1, and the value of y equals 2). I want to change the list to a list of pairs meaning [[x,1],[y,2]], I tried to use append so that I will create a pair in each step of the recursion and append it to a new list but i have problem of doing so (mainly selecting the head and tails of each pair)

false
  • 10,264
  • 13
  • 101
  • 209
  • Can you show your attempt(s) at a solution? Or just use [transpose/2](http://www.swi-prolog.org/pldoc/man?predicate=transpose/2). – lurker Sep 19 '14 at 16:25
  • 1
    possible duplicate of [How to transpose a matrix in prolog](http://stackoverflow.com/questions/4280986/how-to-transpose-a-matrix-in-prolog) – lurker Sep 19 '14 at 16:29
  • @lurker: Hehe, how right you are! – false Sep 19 '14 at 16:35

1 Answers1

0

your example it's a bit contrived, but transpose it's a bit overkill, specially if you're going to implement yourself. I think this should solve your need

'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).
CapelliC
  • 59,646
  • 5
  • 47
  • 90