내가 SWI - 프롤로그에서 9 × 9 스도쿠 퍼즐을 해결하기 위해 노력하고있어와 "거짓"하지만 오류에게 그것을 제공하지 않습니다 단순히 "거짓"이라고 진술합니다.프롤로그 : 나는 빈 스도쿠 인 쿼리를 준</p> <p>, 쿼리
코드도 올바르게 컴파일됩니다.
:- use_module(library(clpfd)).
valid([]).
valid([Head|Tail]) :-
all_different(Head),
valid(Tail).
sudoku(Puzzle, Solution) :-
Solution = Puzzle,
Puzzle = [S11, S12, S13, S14, S15, S16, S17, S18, S19,
S21, S22, S23, S24, S25, S26, S27, S28, S29,
S31, S32, S33, S34, S35, S36, S37, S38, S39,
S41, S42, S43, S44, S45, S46, S47, S48, S49,
S51, S52, S53, S54, S55, S56, S57, S58, S59,
S61, S62, S63, S64, S65, S66, S67, S68, S69,
S71, S72, S73, S74, S75, S76, S77, S78, S79,
S81, S82, S83, S84, S85, S86, S87, S88, S89,
S91, S92, S93, S94, S95, S96, S97, S98, S99],
Puzzle ins 1..9,
Row1 = [S11, S12, S13, S14, S15, S16, S17, S18, S19],
Row2 = [S21, S22, S23, S24, S25, S26, S27, S28, S29],
Row3 = [S31, S32, S33, S34, S35, S36, S37, S38, S39],
Row4 = [S41, S42, S43, S44, S45, S46, S47, S48, S49],
Row5 = [S51, S52, S53, S54, S55, S56, S57, S58, S59],
Row6 = [S61, S62, S63, S64, S65, S66, S67, S68, S69],
Row7 = [S71, S72, S73, S74, S75, S76, S77, S78, S79],
Row8 = [S81, S82, S83, S84, S85, S86, S87, S88, S89],
Row9 = [S91, S92, S93, S94, S95, S96, S97, S98, S99],
Col1 = [S11, S21, S31, S41, S51, S61, S71, S81, S91],
Col2 = [S21, S22, S32, S42, S52, S62, S72, S82, S92],
Col3 = [S31, S32, S33, S43, S53, S63, S73, S83, S93],
Col4 = [S41, S42, S43, S44, S54, S64, S74, S84, S94],
Col5 = [S51, S52, S53, S54, S55, S65, S75, S85, S95],
Col6 = [S61, S62, S63, S64, S65, S66, S76, S86, S96],
Col7 = [S71, S72, S73, S74, S75, S76, S77, S87, S97],
Col8 = [S81, S82, S83, S84, S85, S86, S87, S88, S98],
Col9 = [S91, S92, S93, S94, S95, S96, S97, S98, S99],
Square1 = [S11, S12, S13, S21, S22, S23, S31, S32, S33],
Square2 = [S14, S15, S16, S24, S25, S26, S34, S35, S36],
Square3 = [S17, S18, S19, S27, S28, S29, S37, S38, S39],
Square4 = [S41, S42, S43, S51, S52, S53, S61, S62, S63],
Square5 = [S44, S45, S46, S54, S55, S56, S64, S65, S66],
Square6 = [S47, S48, S49, S57, S58, S59, S67, S68, S69],
Square7 = [S71, S72, S73, S81, S82, S83, S91, S92, S93],
Square8 = [S74, S75, S76, S84, S85, S86, S94, S95, S96],
Square9 = [S77, S78, S79, S87, S88, S89, S97, S98, S99],
valid([Row1, Row2, Row3, Row4, Row5, Row6, Row7, Row8, Row9,
Col1, Col2, Col3, Col4, Col5, Col6, Col7, Col8, Col9,
Square1, Square2, Square3, Square4, Square5, Square6, Square7, Square8, Square9]).
을 내 쿼리는 다음과 같습니다 :
내 코드는 다음과 같다 내가 코드 수많은 시간을 reviewd, 그리고 그것이 사실 반환하지 왜 아무 생각했습니다
sudoku([_, 9, 6, 8, 5, 1, _, 4, _,
1, _, 8, 2, 9, 4, 3, 5, 6,
5, 2, _, 6, _, _, 8, _, 1,
9, _, 5, _, 8, 7, 2, 6, 3,
4, 8, 3, 9, _, 6, 5, _, 7,
_, 6, 7, 3, 1, _, 9, 8, 4,
6, 5, _, 1, 3, 8, _, 7, 9,
7, 4, 9, 5, 6, 2, 1, _, 8,
_, 3, 1, 7, _, 9, _, 2, 5],
Solution).
.
아마도 그 인스턴스는 해결할 수 없습니다. 다른 번호를'_ '로 바꾸어서 스키마를 풀어보십시오. – CapelliC
@CapelliC 나는 그것을 해결할 수 있다고 확신합니다. 어쩌면 내 쿼리 형식이 잘못되었다고 생각하니 제게 "거짓"이라고 생각하니? – marcusvbb
'Colx' 변수가 잘못되었습니다. 그들은 'Col2 = [S12, S22, S32 ...]'를 등록해야하지만 왜'마술사 (all_different, Puzzle), 전치 (Puzzle, T), 매 플리스트 (all_different, T) .... '가 아닌가? – false