📄 sudoku368.pl
字号:
I41,I42,I43,I44,I45,J41,J42,J43,J44,J45,
F51,F52,F53,F54,F55,G51,G52,G53,G54,G55,H51,H52,H53,H54,H55,
I51,I52,I53,I54,I55,J51,J52,J53,J54,J55,
K11,K12,K13,K14,K15,L11,L12,L13,L14,L15,M11,M12,M13,M14,M15,
N11,N12,N13,N14,N15,O11,O12,O13,O14,O15,
K21,K22,K23,K24,K25,L21,L22,L23,L24,L25,M21,M22,M23,M24,M25,
N21,N22,N23,N24,N25,O21,O22,O23,O24,O25,
K31,K32,K33,K34,K35,L31,L32,L33,L34,L35,M31,M32,M33,M34,M35,
N31,N32,N33,N34,N35,O31,O32,O33,O34,O35,
K41,K42,K43,K44,K45,L41,L42,L43,L44,L45,M41,M42,M43,M44,M45,
N41,N42,N43,N44,N45,O41,O42,O43,O44,O45,
K51,K52,K53,K54,K55,L51,L52,L53,L54,L55,M51,M52,M53,M54,M55,
N51,N52,N53,N54,N55,O51,O52,O53,O54,O55,
P11,P12,P13,P14,P15,Q11,Q12,Q13,Q14,Q15,R11,R12,R13,R14,R15,
S11,S12,S13,S14,S15,T11,T12,T13,T14,T15,
P21,P22,P23,P24,P25,Q21,Q22,Q23,Q24,Q25,R21,R22,R23,R24,R25,
S21,S22,S23,S24,S25,T21,T22,T23,T24,T25,
P31,P32,P33,P34,P35,Q31,Q32,Q33,Q34,Q35,R31,R32,R33,R34,R35,
S31,S32,S33,S34,S35,T31,T32,T33,T34,T35,
P41,P42,P43,P44,P45,Q41,Q42,Q43,Q44,Q45,R41,R42,R43,R44,R45,
S41,S42,S43,S44,S45,T41,T42,T43,T44,T45,
P51,P52,P53,P54,P55,Q51,Q52,Q53,Q54,Q55,R51,R52,R53,R54,R55,
S51,S52,S53,S54,S55,T51,T52,T53,T54,T55,
U11,U12,U13,U14,U15,V11,V12,V13,V14,V15,W11,W12,W13,W14,W15,
X11,X12,X13,X14,X15,Y11,Y12,Y13,Y14,Y15,
U21,U22,U23,U24,U25,V21,V22,V23,V24,V25,W21,W22,W23,W24,W25,
X21,X22,X23,X24,X25,Y21,Y22,Y23,Y24,Y25,
U31,U32,U33,U34,U35,V31,V32,V33,V34,V35,W31,W32,W33,W34,W35,
X31,X32,X33,X34,X35,Y31,Y32,Y33,Y34,Y35,
U41,U42,U43,U44,U45,V41,V42,V43,V44,V45,W41,W42,W43,W44,W45,
X41,X42,X43,X44,X45,Y41,Y42,Y43,Y44,Y45,
U51,U52,U53,U54,U55,V51,V52,V53,V54,V55,W51,W52,W53,W54,W55,
X51,X52,X53,X54,X55,Y51,Y52,Y53,Y54,Y55]):-
write_line([A11,A12,A13,A14,A15,B11,B12,B13,B14,B15,C11,C12,C13,C14,C15,
D11,D12,D13,D14,D15,E11,E12,E13,E14,E15]),nl,
write_line([A21,A22,A23,A24,A25,B21,B22,B23,B24,B25,C21,C22,C23,C24,C25,
D21,D22,D23,D24,D25,E21,E22,E23,E24,E25]),nl,
write_line([A31,A32,A33,A34,A35,B31,B32,B33,B34,B35,C31,C32,C33,C34,C35,
D31,D32,D33,D34,D35,E31,E32,E33,E34,E35]),nl,
write_line([A41,A42,A43,A44,A45,B41,B42,B43,B44,B45,C41,C42,C43,C44,C45,
D41,D42,D43,D44,D45,E41,E42,E43,E44,E45]),nl,
write_line([A51,A52,A53,A54,A55,B51,B52,B53,B54,B55,C51,C52,C53,C54,C55,
D51,D52,D53,D54,D55,E51,E52,E53,E54,E55]),nl,
write_line([F11,F12,F13,F14,F15,G11,G12,G13,G14,G15,H11,H12,H13,H14,H15,
I11,I12,I13,I14,I15,J11,J12,J13,J14,J15]),nl,
write_line([F21,F22,F23,F24,F25,G21,G22,G23,G24,G25,H21,H22,H23,H24,H25,
I21,I22,I23,I24,I25,J21,J22,J23,J24,J25]),nl,
write_line([F31,F32,F33,F34,F35,G31,G32,G33,G34,G35,H31,H32,H33,H34,H35,
I31,I32,I33,I34,I35,J31,J32,J33,J34,J35]),nl,
write_line([F41,F42,F43,F44,F45,G41,G42,G43,G44,G45,H41,H42,H43,H44,H45,
I41,I42,I43,I44,I45,J41,J42,J43,J44,J45]),nl,
write_line([F51,F52,F53,F54,F55,G51,G52,G53,G54,G55,H51,H52,H53,H54,H55,
I51,I52,I53,I54,I55,J51,J52,J53,J54,J55]),nl,
write_line([K11,K12,K13,K14,K15,L11,L12,L13,L14,L15,M11,M12,M13,M14,M15,
N11,N12,N13,N14,N15,O11,O12,O13,O14,O15]),nl,
write_line([K21,K22,K23,K24,K25,L21,L22,L23,L24,L25,M21,M22,M23,M24,M25,
N21,N22,N23,N24,N25,O21,O22,O23,O24,O25]),nl,
write_line([K31,K32,K33,K34,K35,L31,L32,L33,L34,L35,M31,M32,M33,M34,M35,
N31,N32,N33,N34,N35,O31,O32,O33,O34,O35]),nl,
write_line([K41,K42,K43,K44,K45,L41,L42,L43,L44,L45,M41,M42,M43,M44,M45,
N41,N42,N43,N44,N45,O41,O42,O43,O44,O45]),nl,
write_line([K51,K52,K53,K54,K55,L51,L52,L53,L54,L55,M51,M52,M53,M54,M55,
N51,N52,N53,N54,N55,O51,O52,O53,O54,O55]),nl,
write_line([P11,P12,P13,P14,P15,Q11,Q12,Q13,Q14,Q15,R11,R12,R13,R14,R15,
S11,S12,S13,S14,S15,T11,T12,T13,T14,T15]),nl,
write_line([P21,P22,P23,P24,P25,Q21,Q22,Q23,Q24,Q25,R21,R22,R23,R24,R25,
S21,S22,S23,S24,S25,T21,T22,T23,T24,T25]),nl,
write_line([P31,P32,P33,P34,P35,Q31,Q32,Q33,Q34,Q35,R31,R32,R33,R34,R35,
S31,S32,S33,S34,S35,T31,T32,T33,T34,T35]),nl,
write_line([P41,P42,P43,P44,P45,Q41,Q42,Q43,Q44,Q45,R41,R42,R43,R44,R45,
S41,S42,S43,S44,S45,T41,T42,T43,T44,T45]),nl,
write_line([P51,P52,P53,P54,P55,Q51,Q52,Q53,Q54,Q55,R51,R52,R53,R54,R55,
S51,S52,S53,S54,S55,T51,T52,T53,T54,T55]),nl,
write_line([U11,U12,U13,U14,U15,V11,V12,V13,V14,V15,W11,W12,W13,W14,W15,
X11,X12,X13,X14,X15,Y11,Y12,Y13,Y14,Y15]),nl,
write_line([U21,U22,U23,U24,U25,V21,V22,V23,V24,V25,W21,W22,W23,W24,W25,
X21,X22,X23,X24,X25,Y21,Y22,Y23,Y24,Y25]),nl,
write_line([U31,U32,U33,U34,U35,V31,V32,V33,V34,V35,W31,W32,W33,W34,W35,
X31,X32,X33,X34,X35,Y31,Y32,Y33,Y34,Y35]),nl,
write_line([U41,U42,U43,U44,U45,V41,V42,V43,V44,V45,W41,W42,W43,W44,W45,
X41,X42,X43,X44,X45,Y41,Y42,Y43,Y44,Y45]),nl,
write_line([U51,U52,U53,U54,U55,V51,V52,V53,V54,V55,W51,W52,W53,W54,W55,
X51,X52,X53,X54,X55,Y51,Y52,Y53,Y54,Y55]),nl.
write_line([]).
write_line([X|Xs]):-
int_to_letter(X,Y),
write(Y),
write_line(Xs).
% read in the initial board and generate constraints
read_board(F):-
see(F),
read_5_lines('A'),
read_5_lines('F'),
read_5_lines('K'),
read_5_lines('P'),
read_5_lines('U'),
seen.
read_5_lines(A):-
read_line(A,1,1),
read_line(A,2,1),
read_line(A,3,1),
read_line(A,4,1),
read_line(A,5,1).
read_line(A,I,J):-
get0(X),
read_line_rest(A,I,J,X).
read_line_rest(A,I,J,X):-
X=:=10,!. % newline
read_line_rest(A,I,J,X):-
J=:=6,!,
next_letter(A,B),
read_line_rest(B,I,1,X).
read_line_rest(A,I,J,X):-
X=:=32,!,
J1 is J+1,
get0(X1),
read_line_rest(A,I,J1,X1).
read_line_rest(A,I,J,X):-
build_var_name(A,I,J,Var),
letter_to_int(X,Int),
write(Var#=Int),write(','),
J1 is J+1,
get0(X1),
read_line_rest(A,I,J1,X1).
build_var_name(A,I,J,Var):-
name(A,[Ai]),
name(I,[Ii]),
name(J,[Ji]),
name(Var,[Ai,Ii,Ji]).
letter_to_int(X,Int):-
X>=0'0,X=<0'9,!,
Int is X-0'0.
letter_to_int(X,Int):-
X>=0'A,X=<0'Z,!,
Int is X-0'A+10.
letter_to_int(X,Int):-
write('wrong letter'),nl.
int_to_letter(X,L):-
X>=0,X=<9,!,
L = X.
int_to_letter(X,L):-
X>=10,X=<25,!,
Li is X-10+0'A,
name(L,[Li]).
int_to_letter(X,L):-
write('wrong int'),nl.
next_letter(A,B):-
name(A,[Ai]),
Bi is Ai+1,
name(B,[Bi]).
reverse(X,Y):-
reverse1(X,[],Y).
reverse1([],L0,L):-
L=L0.
reverse1([X|Xs],L0,L):-
reverse1(Xs,[X|L0],L).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -