프롤로그/CLPFD는 마지막 도메인으로 만 특정 도메인 수만 사용하도록 어떻게 알 수 있습니까?프롤로그 도메인 제한
예. 도메인 0 ... 8. 다른 옵션이없는 경우에만 Prolog가 0을 사용하도록하십시오. 라벨링에 'down'옵션을 사용했지만 너무 많은 0이 할당되었습니다.
컨텍스트 : Hoo-Doo 게임 - 모든 열, 행 또는 대각선이 1-8의 숫자로 반복되는 (스도쿠처럼) 8x8 보드 솔루션을 생성합니다. 솔루션을 완성하려면 투명 피스 2 개 (0으로 표시)를 사용해야합니다. B_i
의
(V_i #= 0) #<==> B_i
합계 :
...
setDomain(H,BoardSize),
maplist(all_distinct,H),
IndexI is BoardSize - 1,
IndexJ is BoardSize - 2,
checkDiagonalsLR(H,IndexI,IndexJ,BoardSize), %calls the all_distinct
IndexJ2 is BoardSize - 1,
checkDiagonalsRL(H,1,IndexJ2,BoardSize), %calls the all_distinct
transpose(H,Columns), maplist(all_distinct,Columns),
useLabeling(Columns,BoardSize), printBoard(Columns).
useLabeling([],N).
useLabeling([H|T],N) :- labeling([down],H), useLabeling(T,N).
질문에 코드를 추가하십시오. –
코드가 추가되었습니다. – user2884323