Я пишу программу PROLOG, в которой интересующая переменная (Q) отказывается объединяться. Я обошел это с помощью хакерского решения (включая оператор write
). Но должен быть способ сделать это объединенным, но ради любви ко мне я не могу понять это.
Я бы очень признателен за любую помощь.
Заранее спасибо.
Вот мой код (я аннотировал везде, где исключил код для краткости)
:- 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],Q,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
]).
Почему-то Q не объединяется. Пожалуйста помоги!
Спасибо!