2
저는 프롤로그에서 미니 스도쿠 해결사를 쓰고 있습니다. 스도쿠는 4x4 필드로 구성됩니다 (예 :프롤로그 모호한 출력
_ _ 2 3
_ _ _ _
_ _ _ _
3 4 _ _
스도쿠에는 (위의 스도쿠처럼) 가능한 해결책이 하나만 있다면 내 프로그램이 예상대로 작동합니다. I는 갭을 적어도 하나 개의 소정 필드를 대체한다면 (_하여 4로 대체함으로써 예) 프롤로그의 출력은 다음과 같다 :
[_#3(1:4),_#23(1:4),2,3.....
I "는 _ # 3 (1 : 4)"추측 수단 " 1 또는 4 "걸리지 만 각 솔루션을 구분 된 모호하지 않은 목록으로 원합니다.
sudoku([_,_,2,3,_,_,_,_,_,_,_,_,3,_,_,_],Sol).
내가 잘못 뭐하는 거지 : 나는은 GNU 프롤로그로로드 할 때
sudoku(Puzzle,Solution):-
Puzzle=Solution,
fd_domain(Solution,1,4),
Puzzle=[S11,S12,S13,S14,
S21,S22,S23,S24,
S31,S32,S33,S34,
S41,S42,S43,S44],
fd_all_different([S11,S12,S13,S14]),
fd_all_different([S21,S22,S23,S24]),
fd_all_different([S31,S32,S33,S34]),
fd_all_different([S41,S42,S43,S44]),
fd_all_different([S11,S21,S31,S41]),
fd_all_different([S12,S22,S32,S42]),
fd_all_different([S13,S23,S33,S43]),
fd_all_different([S14,S24,S34,S44]),
fd_all_different([S11,S12,S21,S22]),
fd_all_different([S13,S14,S23,S24]),
fd_all_different([S31,S32,S41,S42]),
fd_all_different([S33,S34,S43,S44]).
, 나는 다음과 같은 쿼리를 입력 : 이것은 내 코드?
내 코드에서 FD 함수를 사용할 때 FD 값이 일반 프롤로그 값과 다른 방식으로 표현되므로 항상 fd_labeling을 적용해야합니다. – Elayn
예. 그것은 아프지 않습니다. 이미 경험했듯이 제약 조건이 충분히 '강력'할 때 솔루션은 이미 '사용 가능'합니다. – CapelliC
고맙습니다. n_n – Elayn