barva(bila). barva(cervena). barva(modra). barva(zelena). barva(zluta). narod(brit). narod(dan). narod(nemec). narod(nor). narod(sved). zver(pes). zver(ptak). zver(kocka). zver(kun). zver(rybicky). piti(caj). piti(kava). piti(mleko). piti(pivo). piti(voda). kouri(pallmall). kouri(dunhill). kouri(blend). kouri(bluemaster). kouri(prince). rule1(B1,B2,B3,B4,B5,N1,N2,N3,N4,N5) :- B1 = cervena, N1 = brit; B2 = cervena, N2 = brit; B3 = cervena, N3 = brit; B4 = cervena, N4 = brit; B5 = cervena, N5 = brit. rule2(N1,N2,N3,N4,N5,Z1,Z2,Z3,Z4,Z5) :- Z1 = pes, N1 = sved; Z2 = pes, N2 = sved; Z3 = pes, N3 = sved; Z4 = pes, N4 = sved; Z5 = pes, N5 = sved. rule3(N1,N2,N3,N4,N5,P1,P2,P3,P4,P5) :- N1 = dan, P1 = caj; N2 = dan, P2 = caj; N3 = dan, P3 = caj; N4 = dan, P4 = caj; N5 = dan, P5 = caj. rule4(B1,B2,B3,B4,B5) :- B1 = zelena, B2 = bila; B2 = zelena, B3 = bila; B3 = zelena, B4 = bila; B4 = zelena, B5 = bila. rule5(B1,B2,B3,B4,B5,P1,P2,P3,P4,P5) :- B1 = zelena, P1 = kava; B2 = zelena, P2 = kava; B3 = zelena, P3 = kava; B4 = zelena, P4 = kava; B5 = zelena, P5 = kava. rule6(K1,K2,K3,K4,K5,Z1,Z2,Z3,Z4,Z5) :- K1 = pallmall, Z1 = ptak; K2 = pallmall, Z2 = ptak; K3 = pallmall, Z3 = ptak; K4 = pallmall, Z4 = ptak; K5 = pallmall, Z5 = ptak. rule7(B1,B2,B3,B4,B5,K1,K2,K3,K4,K5) :- B1 = zluta, K1 = dunhill; B2 = zluta, K2 = dunhill; B3 = zluta, K3 = dunhill; B4 = zluta, K4 = dunhill; B5 = zluta, K5 = dunhill. rule10(K1,K2,K3,K4,K5,Z1,Z2,Z3,Z4,Z5) :- K1 = blend, Z2 = kocka; K2 = blend, Z1 = kocka; K2 = blend, Z3 = kocka; K3 = blend, Z2 = kocka; K3 = blend, Z4 = kocka; K4 = blend, Z3 = kocka; K4 = blend, Z5 = kocka; K5 = blend, Z4 = kocka. rule11(K1,K2,K3,K4,K5,Z1,Z2,Z3,Z4,Z5) :- K1 = dunhill, Z2 = kun; K2 = dunhill, Z1 = kun; K2 = dunhill, Z3 = kun; K3 = dunhill, Z2 = kun; K3 = dunhill, Z4 = kun; K4 = dunhill, Z3 = kun; K4 = dunhill, Z5 = kun; K5 = dunhill, Z4 = kun. rule12(K1,K2,K3,K4,K5,P1,P2,P3,P4,P5) :- K1 = bluemaster, P1 = pivo; K2 = bluemaster, P2 = pivo; K3 = bluemaster, P3 = pivo; K4 = bluemaster, P4 = pivo; K5 = bluemaster, P5 = pivo. rule13(K1,K2,K3,K4,K5,N1,N2,N3,N4,N5) :- K1 = prince, N1 = nemec; K2 = prince, N2 = nemec; K3 = prince, N3 = nemec; K4 = prince, N4 = nemec; K5 = prince, N5 = nemec. rule14(B1,B2,B3,B4,B5,N1,N2,N3,N4,N5) :- B1 = modra, N2 = nor; B2 = modra, N1 = nor; B2 = modra, N3 = nor; B3 = modra, N2 = nor; B3 = modra, N4 = nor; B4 = modra, N3 = nor; B4 = modra, N5 = nor; B5 = modra, N4 = nor. rule15(K1,K2,K3,K4,K5,P1,P2,P3,P4,P5) :- K1 = blend, P2 = voda; K2 = blend, P1 = voda; K2 = blend, P3 = voda; K3 = blend, P2 = voda; K3 = blend, P4 = voda; K4 = blend, P3 = voda; K4 = blend, P5 = voda; K5 = blend, P4 = voda. reseni(B1,B2,B3,B4,B5,N1,N2,N3,N4,N5,Z1,Z2,Z3,Z4,Z5,P1,P2,P3,P4,P5,K1,K2,K3,K4,K5) :- barva(B1), barva(B2), B2\=B1, barva(B3), B3\=B1, B3\=B2, barva(B4), B4\=B1, B4\=B2, B4\=B3, barva(B5), B5\=B1, B5\=B2, B5\=B3, B5\=B4, narod(N1), narod(N2), N2\=N1, narod(N3), N3\=N1, N3\=N2, narod(N4), N4\=N1, N4\=N2, N4\=N3, narod(N5), N5\=N1, N5\=N2, N5\=N3, N5\=N4, zver(Z1), zver(Z2), Z2\=Z1, zver(Z3), Z3\=Z1, Z3\=Z2, zver(Z4), Z4\=Z1, Z4\=Z2, Z4\=Z3, zver(Z5), Z5\=Z1, Z5\=Z2, Z5\=Z3, Z5\=Z4, kouri(K1), kouri(K2), K2\=K1, kouri(K3), K3\=K1, K3\=K2, kouri(K4), K4\=K1, K4\=K2, K4\=K3, kouri(K5), K5\=K1, K5\=K2, K5\=K3, K5\=K4, piti(P1), piti(P2), P2\=P1, piti(P3), P3\=P1, P3\=P2, piti(P4), P4\=P1, P4\=P2, P4\=P3, piti(P5), P5\=P1, P5\=P2, P5\=P3, P5\=P4, /* 1 Brit bydli v cervenem dome. */ rule1(B1,B2,B3,B4,B5,N1,N2,N3,N4,N5), /* 2 Sved chova psa. */ rule2(N1,N2,N3,N4,N5,Z1,Z2,Z3,Z4,Z5), /* 3 Dan pije caj. */ rule3(N1,N2,N3,N4,N5,P1,P2,P3,P4,P5), /* 4 Zeleny dum stoji hned nalevo od bileho. */ rule4(B1,B2,B3,B4,B5), /* 5 Majitel zeleneho domu pije kavu. */ rule5(B1,B2,B3,B4,B5,P1,P2,P3,P4,P5), /* 6 Ten, kdo kouri PallMall, chova ptaka. */ rule6(K1,K2,K3,K4,K5,Z1,Z2,Z3,Z4,Z5), /* 7 Majitel zluteho domu kouri Dunhill. */ rule7(B1,B2,B3,B4,B5,K1,K2,K3,K4,K5), /* 8 Ten, kdo bydli uprostred rady domu, pije mleko. */ P3 = mleko, /* 9 Nor bydli v prvnim dome. */ N1 = nor, /* 10 Ten, kdo kouri Blend, bydli vedle toho, kdo chova kocku. */ rule10(K1,K2,K3,K4,K5,Z1,Z2,Z3,Z4,Z5), /* 11 Ten, kdo chova kone, bydli vedle toho, kdo kouri Dunhill. */ rule11(K1,K2,K3,K4,K5,Z1,Z2,Z3,Z4,Z5), /* 12 Ten, kdo kouri BlueMaster, pije pivo. */ rule12(K1,K2,K3,K4,K5,P1,P2,P3,P4,P5), /* 13 Nemec kouri Prince. */ rule13(K1,K2,K3,K4,K5,N1,N2,N3,N4,N5), /* 14 Nor bydli vedle modreho domu. */ rule14(B1,B2,B3,B4,B5,N1,N2,N3,N4,N5), /* 15 Ten, kdo kouri Blend, ma souseda, ktery pije vodu. */ rule15(K1,K2,K3,K4,K5,P1,P2,P3,P4,P5). rybicky(X) :- reseni(_,_,_,_,_,X,_,_,_,_,rybicky,_,_,_,_,_,_,_,_,_,_,_,_,_,_); reseni(_,_,_,_,_,_,X,_,_,_,_,rybicky,_,_,_,_,_,_,_,_,_,_,_,_,_); reseni(_,_,_,_,_,_,_,X,_,_,_,_,rybicky,_,_,_,_,_,_,_,_,_,_,_,_); reseni(_,_,_,_,_,_,_,_,X,_,_,_,_,rybicky,_,_,_,_,_,_,_,_,_,_,_); reseni(_,_,_,_,_,_,_,_,_,X,_,_,_,_,rybicky,_,_,_,_,_,_,_,_,_,_).