different9(X1,X2,X3,X4,X5,X6,X7,X8,X9) :- X1=9, different8(X2, X3, X4, X5, X6, X7, X8, X9). different9(X1,X2,X3,X4,X5,X6,X7,X8,X9) :- X2=9, different8(X1, X3, X4, X5, X6, X7, X8, X9). different9(X1,X2,X3,X4,X5,X6,X7,X8,X9) :- X3=9, different8(X1, X2, X4, X5, X6, X7, X8, X9). different9(X1,X2,X3,X4,X5,X6,X7,X8,X9) :- X4=9, different8(X1, X2, X3, X5, X6, X7, X8, X9). different9(X1,X2,X3,X4,X5,X6,X7,X8,X9) :- X5=9, different8(X1, X2, X3, X4, X6, X7, X8, X9). different9(X1,X2,X3,X4,X5,X6,X7,X8,X9) :- X6=9, different8(X1, X2, X3, X4, X5, X7, X8, X9). different9(X1,X2,X3,X4,X5,X6,X7,X8,X9) :- X7=9, different8(X1, X2, X3, X4, X5, X6, X8, X9). different9(X1,X2,X3,X4,X5,X6,X7,X8,X9) :- X8=9, different8(X1, X2, X3, X4, X5, X6, X7, X9). different9(X1,X2,X3,X4,X5,X6,X7,X8,X9) :- X9=9, different8(X1, X2, X3, X4, X5, X6, X7, X8). different8(X1, ... , X8) :- X1=8, different7(X2, X3, X4, X5, X6, X7, X8). different8(X1, ... , X8) :- X2=8, different7(X1, X3, X4, X5, X6, X7, X8). different8(X1, ... , X8) :- X3=8, different7(X1, X2, X4, X5, X6, X7, X8). different8(X1, ... , X8) :- X4=8, different7(X1, X2, X3, X5, X6, X7, X8). different8(X1, ... , X8) :- X5=8, different7(X1, X2, X3, X4, X6, X7, X8). different8(X1, ... , X8) :- X6=8, different7(X1, X2, X3, X4, X5, X7, X8). different8(X1, ... , X8) :- X7=8, different7(X1, X2, X3, X4, X5, X6, X8). different8(X1, ... , X8) :- X8=8, different7(X1, X2, X3, X4, X5, X6, X7) different7(X1, ... , X7) :- X1=7, different6(X2, X3, X4, X5, X6, X7). different7(X1, ... , X7) :- X2=7, different6(X1, X3, X4, X5, X6, X7). different7(X1, ... , X7) :- X3=7, different6(X1, X2, X4, X5, X6, X7). different7(X1, ... , X7) :- X4=7, different6(X1, X2, X3, X5, X6, X7). different7(X1, ... , X7) :- X5=7, different6(X1, X2, X3, X4, X6, X7). different7(X1, ... , X7) :- X6=7, different6(X1, X2, X3, X4, X5, X7). different7(X1, ... , X7) :- X7=7, different6(X1, X2, X3, X4, X5, X6). different6(X1, ... , X6) :- X1=6, different5(X2, X3, X4, X5, X6). different6(X1, ... , X6) :- X2=6, different5(X1, X3, X4, X5, X6). different6(X1, ... , X6) :- X3=6, different5(X1, X2, X4, X5, X6). different6(X1, ... , X6) :- X4=6, different5(X1, X2, X3, X5, X6). different6(X1, ... , X6) :- X5=6, different5(X1, X2, X3, X4, X6). different6(X1, ... , X6) :- X6=6, different5(X1, X2, X3, X4, X5). different5(X1, ... , X5) :- X1=5, different4(X2, X3, X4, X5). different5(X1, ... , X5) :- X2=5, different4(X1, X3, X4, X5). different5(X1, ... , X5) :- X3=5, different4(X1, X2, X4, X5). different5(X1, ... , X5) :- X4=5, different4(X1, X2, X3, X5). different5(X1, ... , X5) :- X5=5, different4(X1, X2, X3, X4). different4(X1, X2, X3, X4) :- X1=4, different3(X2, X3, X4). different4(X1, X2, X3, X4) :- X2=4, different3(X1, X3, X4). different4(X1, X2, X3, X4) :- X3=4, different3(X1, X2, X4). different4(X1, X2, X3, X4) :- X4=4, different3(X1, X2, X3). different3(X1, X2, X3) :- X1=3, different2(X2, X3). different3(X1, X2, X3) :- X2=3, different2(X1, X3). different3(X1, X2, X3) :- X3=3, different2(X1, X2). different2(X1, X2) :- X1=2, X2=1. different2(X1, X2) :- X2=2, X1=1. sudoku(X0, ... , X80) :- // rows different9(X0 , X1 , ... , X7 , X8 ), different9(X9 , X10, ... , X16, X17), ... different9(X63, X64, ... , X70, X71), different9(X72, X73, ... , X79, X80), //columns different9(x0 , X9 , ... , X63, X72), different9(X1 , X10, ... , X64, X73), ... different9(X7 , X16, ... , X70, X79), different9(X8 , X17, ... , X71, X80), //blocks different9(x0 , X1 , X2 , X9 , X10, X11, X18, X19, X20), different9(X3 , X4 , X5 , X12, X13, X14, X21, X22, X23), ... different9(X57, X58, X59, X66, X67, X68, X75, X76, X77), different9(X60, X61, X62, X69, X70, X71, X78, X79, X80).