/* V Karlových Varech jsou 4 střední školy. Do každé z nich chodí jeden z mých kamarádů. Úkolem je zjistit, kdo studuje na jaké škole. Víme pouze to, že: 1. Elsner a Egert nestudují na obchodní akademii ani na gumnáziu. 2. Lukáš nestuduje na gymnáziu. 3. Martin nestuduje dopravní školu. 4. Na obchodní akademii nestuduje Daniel and Lukáš. 5. Jedna ze škol je průmyslovka. 6. Macek se nejmenuje Peter ani Martin. 7. Egert se nejmenuje Lukáš ani Peter. 8. Můj nejlepší kamarád se jmenuje Surnak. */ %1. Elsner a Egert nestudují na obchodní akademii ani na gumnáziu. obchodni(X, Y) :- student(X, Y), not((Y = elsner; Y = egert)). gymnazium(X, Y) :- student(X, Y), not((Y = elsner; Y = egert)). %2. Lukáš nestuduje na gymnáziu. gymnazium(X, Y) :- student(X, Y), not(X = lukas). %3. Martin nestuduje dopravní školu. dopravni(X, Y) :- student(X, Y), not(X=martin). %4. Na obchodní akademii nestuduje Daniel and Lukáš. obchodni(X, Y) :- student(X, Y), not((X=daniel; X=lukas)). %5. Jedna ze škol je průmyslovka. prumyslova(X, Y) :- student(X, Y). %6. Macek se nejmenuje Peter ani Martin. student(X, macek) :- jmeno(X), not(X = peter), not(X = martin). %7. Egert se nejmenuje Lukáš ani Peter. student(X, egert) :- jmeno(X), not(X = lukas), not(X = peter). %8. Můj nejlepší kamarád se jmenuje Surnak. student(X, surnak) :- jmeno(X). %------- Dodatky ---------------------------------------------- %existuje i student s prijmenim elsner viz. 1. student(X, elsner) :- jmeno(X). %nyni musime uvest vsechna jmena studentu, seradil jsem je podle prvniho vyskytu v zadani jmeno(lukas). jmeno(martin). jmeno(daniel). jmeno(peter). %V Karlových Varech jsou 4 střední školy. Do každé z nich chodí jeden z mých kamarádů. %zadny student nechodi do dvou ruznych skol... ruzny(X1, X2, X3, X4) :- not(X1 = X2), not(X1 = X3), not(X1 = X4), not(X2 = X3), not(X2 = X4), not(X3 = X4). %pomocny predikat, ktery do X1-X4 vlozi jmena studentu a do Y1-Y4 jejich prijmeni studenti(X1, Y1, X2, Y2, X3, Y3, X4, Y4) :- gymnazium(X1, Y1), prumyslova(X2, Y2), obchodni(X3, Y3), dopravni(X4, Y4), ruzny(X1, X2, X3, X4), ruzny(Y1, Y2, Y3, Y4). %predikat ktery vypise studenty na obrazovku, jedna se o spousteci predikat go :- studenti(G_JM, G_PR, P_JM, P_PR, O_JM, O_PR, D_JM, D_PR), write('Gymnasium: '), write(G_PR), write(' '), write(G_JM), nl, write('Prumyslova: '), write(P_PR), write(' '), write(P_JM), nl, write('Obchodni: '), write(O_PR), write(' '), write(O_JM), nl, write('Dopravni: '), write(D_PR), write(' '), write(D_JM).