/* Je 5 domů, z nichž každý má jinou barvu. V každém domě žije jeden člověk, který pochází z jiného státu. Každý člověk pije nápoj, kouří jeden druh cigaret a chová jedno zvíře. Žádný z nich nepije stejný nápoj, nekouří stejný druh cigaret a nechová stejné zvíře. 1 Brit bydlí v červeném domě. 2 Švéd chová psa. 3 Dán pije čaj. 4 Zelený dům stojí hned nalevo od bílého. 5 Majitel zeleného domu pije kávu. 6 Ten, kdo kouří PallMall, chová ptáka. 7 Majitel žlutého domu kouří Dunhill. 8 Ten, kdo bydlí uprostřed řady domů, pije mléko. 9 Nor bydlí v prvním domě. 10 Ten, kdo kouří Blend, bydlí vedle toho, kdo chová kočku. 11 Ten, kdo chová koně, bydlí vedle toho, kdo kouří Dunhill. 12 Ten, kdo kouří BlueMaster, pije pivo. 13 Němec kouří Prince. 14 Nor bydlí vedle modrého domu. 15 Ten, kdo kouří Blend, má souseda, který pije vodu. Kdo má rybičky? */ 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(B,N,Z,P,K) :- /* 8 Ten, kdo bydlí uprostřed řady domů, pije mléko. */ P = [_,_,mleko,_,_], /* 9 Nor bydlí v prvním domě. */ N = [nor,_,_,_,_], /* 4 Zelený dům stojí hned nalevo od bílého. */ rule4(B), /* 1 Brit bydlí v červeném domě. */ rule1(B,N), /* 14 Nor bydlí vedle modrého domu. */ rule14(B,N), /* 2 Švéd chová psa. */ rule2(N,Z), /* 6 Ten, kdo kouří PallMall, chová ptáka. */ rule6(K,Z), /* 7 Majitel žlutého domu kouří Dunhill. */ rule7(B,K), /* 10 Ten, kdo kouří Blend, bydlí vedle toho, kdo chová kočku. */ rule10(K,Z), /* 11 Ten, kdo chová koně, bydlí vedle toho, kdo kouří Dunhill. */ rule11(K,Z), /* 13 Němec kouří Prince. */ rule13(K,N), /* 5 Majitel zeleného domu pije kávu. */ rule5(B,P), /* 3 Dán pije čaj. */ rule3(N,P), /* 12 Ten, kdo kouří BlueMaster, pije pivo. */ rule12(K,P), /* 15 Ten, kdo kouří Blend, má souseda, který pije vodu. */ rule15(K,P). rybicky(X) :- reseni(_,[X,_,_,_,_],[rybicky,_,_,_,_],_,_); reseni(_,[_,X,_,_,_],[_,rybicky,_,_,_],_,_); reseni(_,[_,_,X,_,_],[_,_,rybicky,_,_],_,_); reseni(_,[_,_,_,X,_],[_,_,_,rybicky,_],_,_); reseni(_,[_,_,_,_,X],[_,_,_,_,rybicky],_,_).