Why doesn't 'Q' unify in this PROLOG program
Posted
by inspectorG4dget
on Stack Overflow
See other posts from Stack Overflow
or by inspectorG4dget
Published on 2010-03-24T04:14:42Z
Indexed on
2010/03/24
4:23 UTC
Read the original article
Hit count: 317
Hello SO,
I am writing a PROLOG program in which the variable of interest (Q) refuses to unify. I have gotten around this with a hacky solution (include a write
statement). But there has to be a way to make this unify, but for the love of me, I am not able to figure it out.
I'd really appreciate any help. Thanks in advance.
Here is my code (I have annotated wherever I have excluded code for brevity)
:- use_module(library(bounds)).
:- use_module(library(lists)).
solve([17],Q,_,_,_):- write(Q). %this is the hacky workaround
solve(L,Q,1,3,2) :- jump(L,Q,N,1,3,2,R), solve(N,R,S,D,M), member([S|[D|[M|[]]]],[[1, 3, 2], [1, 9, 4], [2, 10, 5] this list contains 76 items - all of which are lists of length 3. I have omitted them here for the sake of brevity]).
% there are about 75 other definitions for solve, all of which are structured exactly the same. The only difference is that the numbers in the input parameters will be different in each definition
jump(L,Q,N,S,D,M,R):- member(S,L), not(member(D,L)), member(M,L), delete(L,S,X), delete(X,M,Y), append(Y,[D],N), append(Q,[[S,D]],R).
cross_sol(Q) :- solve([5,9,10,11,17,24],[],S,D,M), member([S,D,M], [
I have edited out this list here for the sake of brevity. It is the same list found in the definition of solve
]).
For some reason, Q does not unify. Please help!
© Stack Overflow or respective owner