LISTPREDICATES
ausführen
mann(adam). mann(tobias). mann(frank). frau(eva). frau(daniela). frau(ulrike). vater(adam,tobias). vater(tobias,frank). vater(tobias,ulrike). mutter(eva,tobias). mutter(daniela,frank). mutter(daniela,ulrike). grossvater(X,Y) :- vater(X,Z), vater(Z,Y). grossvater(X,Y) :- vater(X,Z), mutter(Z,Y).
grossvater(X,frank).
%queens(N,[N1,N2,...,NN]) is true if you can put a queen on an NxN % in the ith rank of the nth file, s.t. no % queen attacks any other queen. queens(N,Qs) :- range(1,N,Ns), queens(Ns,[],Qs). queens(UnplacedQs, SafeQs, Qs) :- selectq(Q, UnplacedQs, UnplacedQs1), \+ attack(Q,SafeQs), queens(UnplacedQs1,[Q|SafeQs],Qs). queens([],Qs,Qs). attack(X,Xs) :- attack(X, 1, Xs). attack(X,N,[Y|_]) :- X is Y+N ; X is Y-N. attack(X,N,[_|Ys]) :- N1 is N+1, attack(X,N1,Ys). range(M,N,[M|Ns]) :- M < N, M1 is M+1, range(M1,N,Ns). range(N,N,[N]). selectq(X,[X|Xs],Xs). selectq(X,[Y|Ys],[Y|Zs]) :- selectq(X,Ys,Zs). %Try %queens(4,P). % % The result P=[3,1,4,2] means the queens go like this: % ***************** % 4 * * * Q * * % ***************** % 3 * Q * * * * % ***************** % 2 * * * * Q * % ***************** % 1 * * Q * * * % ***************** % 1 2 3 4
queens(8,P).
% Einstein Rätsel! % Nur 2% der Personen auf der Welt können dieses Rätsel lösen;-) % % Es gibt fünf Häuser mit je einer Farbe. % In jedem Haus wohnt eine Person einer anderen Nationalität. % Jeder Hausbewohner bevorzugt ein bestimmtes Getränk, raucht eine bestimmte Zigarettenmarke und hält ein bestimmtes Haustier. % KEINE der fünf Personen trinkt das gleiche Getränk, raucht die gleichen Zigaretten oder hält das gleiche Tier wie einer seiner Nachbarn. % % Hinweise: % 1. Der Brite lebt im roten Haus. % 2. Der Schwede haelt einen Hund. % 3. Der Daene trinkt gerne Tee. % 4. Das gruene Haus steht links vom weissen Haus. % 5. Der Besitzer vom gruenen Haus trinkt Kaffee. % 6. Die Person, die PallMall raucht, haelt eine Vogel. % 7. Der Mann, der im mittleren Haus wohnt, trinkt gerne Milch. % 8. Der Besitzer des gelben Hauses raucht Dunhill. % 9. Der Norweger wohnt im ersten Haus. %10. Der Malboro-Raucher wohnt neben dem, der eine Katze haelt. %11. Der Mann, der ein Pferd haelt, wohnt neben dem, der Dunhill raucht. %12. Der Winfield-Raucher trinkt gerne Bier. %13. Der Norweger wohnt neben dem blauen Haus. %14. Der Deutsche raucht Rothmanns. %15. Der Malboro-Raucher hat einen Nachbarn, der Wasser trinkt. % Mögliche Lösungen: % A = 1, norweger, gruen, kaffee, pallmall, vogel % B = 2, deutscher, blau, wasser, rothmanns, katze % C = 3, schwede, weiss, milch, marlboro, hund % D = 4, brite, rot, bier, winfield, pferd % E = 5, daene, gelb, tee, dunhill, fisch ; % A = 1, norweger, gruen, kaffee, marlboro, fisch % B = 2, deutscher, blau, wasser, rothmanns, katze % C = 3, schwede, gelb, milch, dunhill, hund % D = 4, brite, rot, bier, winfield, pferd % E = 5, daene, weiss, tee, pallmall, vogel ; % A = 1, norweger, gruen, kaffee, pallmall, vogel % B = 2, deutscher, blau, wasser, rothmanns, katze % C = 3, brite, rot, milch, marlboro, pferd % D = 4, daene, gelb, tee, dunhill, fisch % E = 5, schwede, weiss, bier, winfield, hund ; % A = 1, norweger, gruen, kaffee, pallmall, vogel % B = 2, deutscher, blau, wasser, rothmanns, fisch % C = 3, brite, rot, milch, marlboro, pferd % D = 4, daene, gelb, tee, dunhill, katze % E = 5, schwede, weiss, bier, winfield, hund ; % A = 1, norweger, gruen, kaffee, pallmall, vogel % B = 2, deutscher, blau, wasser, rothmanns, katze % C = 3, schwede, weiss, milch, marlboro, hund % D = 4, daene, gelb, tee, dunhill, fisch % E = 5, brite, rot, bier, winfield, pferd ; % A = 1, norweger, gruen, kaffee, pallmall, vogel % B = 2, deutscher, blau, wasser, rothmanns, fisch % C = 3, schwede, weiss, milch, marlboro, hund % D = 4, daene, gelb, tee, dunhill, katze % E = 5, brite, rot, bier, winfield, pferd ; % A = 1, norweger, gelb, wasser, dunhill, katze % B = 2, daene, blau, tee, marlboro, pferd % C = 3, brite, rot, milch, pallmall, vogel % D = 4, deutscher, gruen, kaffee, rothmanns, fisch % E = 5, schwede, weiss, bier, winfield, hund ; %mögliche Nationen nation(brite). nation(schwede). nation(daene). nation(norweger). nation(deutscher). %mögliche Farben farbe(rot). farbe(gelb). farbe(gruen). farbe(weiss). farbe(blau). %mögliche Getränke getraenk(milch). getraenk(wasser). getraenk(bier). getraenk(kaffee). getraenk(tee). %mögliche Zigaretten zigaretten(dunhill). zigaretten(winfield). zigaretten(rothmanns). zigaretten(marlboro). zigaretten(pallmall). %mögliches Haustier haustier(hund). haustier(vogel). haustier(pferd). haustier(katze). haustier(fisch). %Positionen pos(1). pos(2). pos(3). pos(4). pos(5). ungleich(A,B,C,D,E):- not(A = B), not(A = C), not(A = D), not(A = E), not(B = C), not(B = D), not(B = E), not(C = D), not(C = E), not(D = E). position(A, B, C, D, E):- pos(A), pos(B), pos(C), pos(D), pos(E), ungleich(A, B, C, D, E). nation(A,B,C,D,E):- nation(A), nation(B), nation(C), nation(D), nation(E), ungleich(A,B,C,D,E). farbe(A,B,C,D,E):- farbe(A), farbe(B), farbe(C), farbe(D), farbe(E), ungleich(A,B,C,D,E). getraenk(A, B, C, D, E):- getraenk(A), getraenk(B), getraenk(C), getraenk(D), getraenk(E), ungleich(A, B, C, D, E). zigaretten(A, B, C, D, E):- zigaretten(A), zigaretten(B), zigaretten(C), zigaretten(D), zigaretten(E), ungleich(A, B, C, D, E). haustier(A, B, C, D, E):- haustier(A), haustier(B), haustier(C), haustier(D), haustier(E), ungleich(A,B,C,D,E). % Masterrule: Vorlage für rule % z.B. deutscher raucht rothmanns, k=deutscher, l=rothmanns % übergabe: paarweise nation und zigarette mrule(A,B,C,D,E,F,G,H,I,J,K,L):- A = K, B = L. mrule(A,B,C,D,E,F,G,H,I,J,K,L):- C = K, D = L. mrule(A,B,C,D,E,F,G,H,I,J,K,L):- E = K, F = L. mrule(A,B,C,D,E,F,G,H,I,J,K,L):- G = K, H = L. mrule(A,B,C,D,E,F,G,H,I,J,K,L):- I = K, J = L. siedlung((P1, N1 ,F1, G1, Z1, T1),(P2, N2, F2, G2, Z2, T2), (P3, N3, F3, G3, Z3, T3), (P4, N4, F4, G4, Z4, T4), (P5, N5, F5, G5, Z5, T5)):- P1 = 1, P2 = 2, P3 = 3, P4 = 4, P5 = 5, %position(P1,P2,P3,P4,P5), nation(N1,N2,N3,N4,N5), % Der Norweger wohnt im ersten Haus. mrule(P1,N1,P2,N2,P3,N3,P4,N4,P5,N5,1,norweger), farbe(F1,F2,F3,F4,F5), rule4(F1,1,F2,2,F3,3,F4,4,F5,5), % Der Brite lebt im roten Haus. mrule(N1,F1,N2,F2,N3,F3,N4,F4,N5,F5, brite, rot), getraenk(G1,G2,G3,G4,G5), % Der Mann, der im mittleren Haus wohnt, trinkt Milch. mrule(P1,G1,P2,G2,P3,G3,P4,G4,P5,G5,3,milch), % Der Besitzer des grünen Hauses trinkt Kaffee mrule(F1,G1,F2,G2,F3,G3,F4,G4,F5,G5, gruen, kaffee), % Der Däne trinkt gerne Tee. mrule(N1,G1,N2,G2,N3,G3,N4,G4,N5,G5, daene, tee), zigaretten(Z1, Z2, Z3, Z4, Z5), % Der Winfield-Raucher trinkt gerne Bier. mrule(Z1,G1,Z2,G2,Z3,G3,Z4,G4,Z5,G5,winfield,bier), % Der Besitzer des gelben Hauses raucht Dunhill. mrule(F1,Z1,F2,Z2,F3,Z3,F4,Z4,F5,Z5,gelb,dunhill), haustier(T1, T2, T3, T4, T5), % Der Schwede hält einen Hund mrule(N1,T1,N2,T2,N3,T3,N4,T4,N5,T5, schwede, hund), % Die Person, die Pall Mall raucht, hält einen Vogel. mrule(Z1,T1,Z2,T2,Z3,T3,Z4,T4,Z5,T5, pallmall, vogel), % Der Deutsche raucht Rothmanns. mrule(N1,Z1,N2,Z2,N3,Z3,N4,Z4,N5,Z5,deutscher,rothmanns), % Der Marlboro-Raucher wohnt neben dem, der eine Katze hält. nrule(Z1,T1,Z2,T2,Z3,T3,Z4,T4,Z5,T5,marlboro,katze), % Der Mann, der ein Pferd hält, wohnt neben dem, der Dunhill raucht. nrule(Z1,T1,Z2,T2,Z3,T3,Z4,T4,Z5,T5, dunhill, pferd), % Der Norweger wohnt neben dem blauen Haus. nrule(N1,F1,N2,F2,N3,F3,N4,F4,N5,F5, norweger, blau), % Der Marlboro-Raucher hat einen Nachbarn, der Wasser trinkt. nrule(Z1,G1,Z2,G2,Z3,G3,Z4,G4,Z5,G5, marlboro, wasser). % Allgemeine Regel für "wohnt neben" nrule(A,B,C,D,E,F,G,H,I,J,K,L):- A = K, D = L. nrule(A,B,C,D,E,F,G,H,I,J,K,L):- C = K, F = L. nrule(A,B,C,D,E,F,G,H,I,J,K,L):- E = K, H = L. nrule(A,B,C,D,E,F,G,H,I,J,K,L):- G = K, J = L. nrule(A,B,C,D,E,F,G,H,I,J,K,L):- B = L, C = K. nrule(A,B,C,D,E,F,G,H,I,J,K,L):- D = L, E = K. nrule(A,B,C,D,E,F,G,H,I,J,K,L):- F = L, G = K. nrule(A,B,C,D,E,F,G,H,I,J,K,L):- H = L, I = K. % Der Marlboro-Raucher wohnt neben dem, der eine Katze hält. ruleN1(marlboro,_,_,katze,_,_,_,_,_,_). ruleN1(_,_,marlboro,_,_,katze,_,_,_,_). ruleN1(_,_,_,_,marlboro,_,_,katze,_,_). ruleN1(_,_,_,_,_,_,marlboro,_,_,katze). ruleN1(_,katze,marlboro,_,_,_,_,_,_,_). ruleN1(_,_,_,katze,marlboro,_,_,_,_,_). ruleN1(_,_,_,_,_,katze,marlboro,_,_,_). ruleN1(_,_,_,_,_,_,_,katze,marlboro,_). % Der Mann, der ein Pferd hält, wohnt neben dem, der Dunhill raucht. ruleN2(dunhill,_,_,pferd,_,_,_,_,_,_). ruleN2(_,_,dunhill,_,_,pferd,_,_,_,_). ruleN2(_,_,_,_,dunhill,_,_,pferd,_,_). ruleN2(_,_,_,_,_,_,dunhill,_,_,pferd). ruleN2(_,pferd,dunhill,_,_,_,_,_,_,_). ruleN2(_,_,_,pferd,dunhill,_,_,_,_,_). ruleN2(_,_,_,_,_,pferd,dunhill,_,_,_). ruleN2(_,_,_,_,_,_,_,pferd,dunhill,_). % Der Norweger wohnt neben dem blauen Haus. ruleN3(norweger,_,_,blau,_,_,_,_,_,_). ruleN3(_,_,norweger,_,_,blau,_,_,_,_). ruleN3(_,_,_,_,norweger,_,_,blau,_,_). ruleN3(_,_,_,_,_,_,norweger,_,_,blau). ruleN3(_,blau,norweger,_,_,_,_,_,_,_). ruleN3(_,_,_,blau,norweger,_,_,_,_,_). ruleN3(_,_,_,_,_,blau,norweger,_,_,_). ruleN3(_,_,_,_,_,_,_,blau,norweger,_). % Der Marlboro-Raucher hat einen Nachbarn, der Wasser trinkt. ruleN4(marlboro,_,_,wasser,_,_,_,_,_,_). ruleN4(_,_,marlboro,_,_,wasser,_,_,_,_). ruleN4(_,_,_,_,marlboro,_,_,wasser,_,_). ruleN4(_,_,_,_,_,_,marlboro,_,_,wasser). ruleN4(_,wasser,marlboro,_,_,_,_,_,_,_). ruleN4(_,_,_,wasser,marlboro,_,_,_,_,_). ruleN4(_,_,_,_,_,wasser,marlboro,_,_,_). ruleN4(_,_,_,_,_,_,_,wasser,marlboro,_). % Der Brite lebt im roten Haus. rule1(brite, rot,_,_,_,_,_,_,_,_). rule1(_,_,brite,rot,_,_,_,_,_,_). rule1(_,_,_,_,brite,rot,_,_,_,_). rule1(_,_,_,_,_,_,brite,rot,_,_). rule1(_,_,_,_,_,_,_,_,brite,rot). % Der Schwede hält einen Hund rule2(N1,F1,N2,F2,N3,F3,N4,F4,N5,F5):- N1 = schwede, F1 = hund. rule2(N1,F1,N2,F2,N3,F3,N4,F4,N5,F5):- N2 = schwede, F2 = hund. rule2(N1,F1,N2,F2,N3,F3,N4,F4,N5,F5):- N3 = schwede, F3 = hund. rule2(N1,F1,N2,F2,N3,F3,N4,F4,N5,F5):- N4 = schwede, F4 = hund. rule2(N1,F1,N2,F2,N3,F3,N4,F4,N5,F5):- N5 = schwede, F5 = hund. % Der Däne trinkt gerne Tee. rule3(daene,tee,_,_,_,_,_,_,_,_). rule3(_,_,daene,tee,_,_,_,_,_,_). rule3(_,_,_,_,daene,tee,_,_,_,_). rule3(_,_,_,_,_,_,daene,tee,_,_). rule3(_,_,_,_,_,_,_,_,daene,tee). haus(P, daene, F, tee, Z, T). % Das grüne Haus steht links vom weißen Haus rule4(gruen,1,weiss,2,_,_,_,_,_,_). rule4(gruen,1,_,_,weiss,3,_,_,_,_). rule4(gruen,1,_,_,_,_,weiss,4,_,_). rule4(gruen,1,_,_,_,_,_,_,weiss,5). rule4(_,_,gruen,2,weiss,3,_,_,_,_). rule4(_,_,gruen,2,_,_,weiss,4,_,_). rule4(_,_,_,_,gruen,3,weiss,4,_,_). rule4(gruen,1,_,_,_,_,_,_,weiss,5). rule4(_,_,gruen,2,_,_,_,_,weiss,5). rule4(_,_,_,_,gruen,3,_,_,weiss,5). rule4(_,_,_,_,_,_,gruen,4,weiss,5). % Der Besitzer des grünen Hauses trinkt Kaffee rule5(gruen,kaffee,_,_,_,_,_,_,_,_). rule5(_,_,gruen,kaffee,_,_,_,_,_,_). rule5(_,_,_,_,gruen,kaffee,_,_,_,_). rule5(_,_,_,_,_,_,gruen,kaffee,_,_). rule5(_,_,_,_,_,_,_,_,gruen,kaffee). % Die Person, die Pall Mall raucht, hält einen Vogel. rule6(pallmall,vogel,_,_,_,_,_,_,_,_). rule6(_,_,pallmall,vogel,_,_,_,_,_,_). rule6(_,_,_,_,pallmall,vogel,_,_,_,_). rule6(_,_,_,_,_,_,pallmall,vogel,_,_). rule6(_,_,_,_,_,_,_,_,pallmall,vogel).
siedlung(A,B,C,D,E).