i'm making a game in prolog, with a given set of domino pieces, it should make a correct domino row using all the pieces in the initial set. we must use an inference system in which we must build the initial state and the final state like this:
initial(dominos([[1,4],[2,3],[4,2]],[])).
final(dominos([],[[1,4],[4,2],[2,3]])).
the first transtion is just pick one pice from the 1st list and put it into the 2nd list, but the next ones should verify if the 2nd number matches the 1st number of the piece to be put. i think i have the 2nd transition's head
first transition:
transition(dominos(L,[]),A,dominos(L1,[A])):- select(A,L,L1).
second transition:
transition(dominos(L,B),A,dominos(L1,[[X,Y]|[Y,_])):- select(B,L,L1).
how do i verify the conditions?
Consider something like this:
Usage:
So if you have:
tasselli([t(3,4),t(5,3),t(4,1),t(1,5)]).
Then the result will be:
?domino(X).
X = [t(4, 1), t(1, 5), t(5, 3), t(3, 4)] ;
X = [t(3, 4), t(4, 1), t(1, 5), t(5, 3)] ;
X = [t(1, 5), t(5, 3), t(3, 4), t(4, 1)] ;
X = [t(5, 3), t(3, 4), t(4, 1), t(1, 5)] ;
false.