%Michael Aiello %Programming Languages FALL 2004 %Backtracking Project %Problem 1 %Version 2 implement matrix open core constants className = "matrix". classVersion = "$JustDate: $$Revision: $". clauses classInfo(className, classVersion). domains class facts - familyDB trynum : (integer Number). class predicates isProb1 : (integer NUMBER,integer NUMBER,integer NUMBER,integer NUMBER, integer NUMBER,integer NUMBER,integer NUMBER,integer NUMBER, integer NUMBER,integer NUMBER,integer NUMBER,integer NUMBER, integer NUMBER,integer NUMBER,integer NUMBER,integer NUMBER) nondeterm anyflow. %ABCD %EFGH %IJKL %MNOP clauses isProb1(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P):- trynum(A), A = 0, trynum(B), trynum(E),trynum(F), A <> B, A <> E, A <> F, B F, E <> F, A + B + E + F = 30, trynum(C),trynum(G), A <> C, A <> G, B <> C, B <> G, E <> C, E <> G, F <> C, F <> G, C <> G, B + C + F + G = 30, trynum(I), trynum(J), A <> I, A <> J, B <> I, B <> J, E <> I, E <> J, F <> I, F <> J, C <> I, C <> J, G <> I, G <> J, I <> J, E + F + I + J =30, trynum(K), A <> K, B <> K, E <> K, F <> K, C <> K, G <> K, I <> K, J <> K, F + G + J + K =30, trynum(D), trynum(H), A <> D, A <> H, B H, E <> D, E <> H, F <> D, F <> H, C <> D, C <> H, G <> D, G <> H, I <> D, I <> H, J <> D, J <> H, K <> D, K <> H, D <> H, C + D + G + H = 30, trynum(M), trynum(N), A <> M, A <> N, B <> M, B <> N, E N, F <> M, F <> N, C <> M, C <> N, G <> M, G <> N, I <> M, I <> N, J <> M, J <> N, K <> M, K <> N, D <> M, D <> N, M <> N, I + J + M + N = 30, trynum(L), A <> L, B <> L, E <> L, F <> L, C <> L, G <> L, I <> L, J <> L, K <> L, D <> L, M <> L, N <> L, G + H + K + L = 30, trynum(O), A <> O, B <> O, E <> O, F <> O, C <> O, G <> O, I <> O, J <> O, K <> O, D <> O, M <> O, N <> O, L <> O, J + K + N + O = 30, trynum(P), A <> P, B <> P, E <> P, F <> P, C <> P, G <> P, I <> P, J <> P, K <> P, D <> P, M <> P, N <> P, O <> P, L <> P, K + L + O + P = 30. clauses trynum(0). trynum(1). trynum(2). trynum(3). trynum(4). trynum(5). trynum(6). trynum(7). trynum(8). trynum(9). trynum(10). trynum(11). trynum(12). trynum(13). trynum(14). trynum(15). clauses run():- console::init(), stdIO::write("Answers\n"), isProb1 (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P), stdIO::writef("%\t %\t %\t % \n", A,B,C,D), stdIO::writef("%\t %\t %\t % \n", E,F,G,H), stdIO::writef("%\t %\t %\t % \n", I,J,K,L), stdIO::writef("%\t %\t %\t % \n\n", M,N,O,P), % stdIO::writef("% % % % % % % % % % % % % % % %\n",A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P), fail. run():- stdIO::write("End\n"). end implement matrix goal mainExe::run(matrix::run).