나는 프롤로그의 초급 단계 코스에서지도 채색 문제를 겪고 있습니다. 여기 내 코드가있다.프롤로그 목록의 후행 변수
col(Colors,Map,Coloring) :-
checkMap(Colors,Map,Coloring).
checkMap(Colors,[Country1:Country2],Coloring) :-
goodColor(Country1:Country2,Coloring,Colors).
checkMap(Colors,[Country1:Country2|Rest],Coloring) :-
goodColor(Country1:Country2,Coloring,Colors),
checkMap(Colors,Rest,Coloring).
goodColor(Country1:Country2,Coloring,Colors) :-
mem(Country1:Color1,Coloring),!,
mem(Country2:Color2,Coloring),!,
mem(Color1,Colors), mem(Color2,Colors),
not(Color1=Color2).
mem(Var,[Var|_]).
mem(Var,[_|Rest]) :-
mem(Var,Rest).
내 출력은 다음과 같습니다
?- col([a,b,c],[1:2,1:3,2:3],X).
X = [1:a, 2:b, 3:c|_G332] ;
X = [1:a, 2:c, 3:b|_G332] ;
X = [1:b, 2:a, 3:c|_G332] ;
X = [1:b, 2:c, 3:a|_G332] ;
X = [1:c, 2:a, 3:b|_G332] ;
X = [1:c, 2:b, 3:a|_G332] ;
fail.
누구든지 내가 후행 변수의 제거 얻을 수있는 방법을 알아? 나는 그것이 대부분 화장 인 것을 안다. 그러나 나는 그것이 왜 있는지에 관해 안다.
거기에 술어/1 거기에 무엇입니까? 답변을 주셔서 감사합니다 :) – Pjotrovitz