Programatori

Enunțul problemei:
James, Tim, Bob și Jim, fiecare cunosc câte un limbaj de programare diferit și fiecare este specializat într-un domeniu diferit. Se cunosc următoarele:
a)Cel ce programează în Java e specialist în biologie.
b)Tom nu știe nici Prolog nici HTML, nici matematică.
c)James nu cunoaște nici Prolog, nici HTML, nici matematică .
d)Specialistul în chimie nu programează în HTML.
e)Bob e specialist în fizică și nu programează în Prolog.
În ce limbaj și în ce domeniu e specializat fiecare?

prolog_logo
Cod Sursa PROLOG

 

nume(james).
nume(tom).
nume(bob).
nume(jim).
limbaj(html).
limbaj(cpp).
limbaj(java).
limbaj(prolog).
domeniu(mate).
domeniu(fizica).
domeniu(chimie).
domeniu(bio).
%reguli
regula1(Y,Z):-Y=bio,!,Z=java.
regula1(_,_).
regula2(X,Y,Z):-X=tom,!,Y\==mate,Z\==prolog,Z\==html.
regula2(_,_,_).
regula3(X,Y,Z):-X=james,!,Y\==mate,Z\==prolog,Z\==html.
regula3(_,_,_).
regula4(Y,Z):-Y=chimie,!,Z\==html.
regula4(_,_).
regula5(X,Y,Z):-X=bob,!,Y=fizica,Z\==prolog.
regula5(_,_,_).
rezolva(X,Y,Z):-nume(X),
domeniu(Y),
limbaj(Z),
regula1(Y,Z),
regula2(X,Y,Z),
regula3(X,Y,Z),
regula4(Y,Z),
regula5(X,Y,Z).
diferit(X1,X2,X3,X4):-X1\==X2,X1\==X3,X1\==X4,X2\==X3,X2\==X4,X3\==X4.
solutie(Y1,Z1,Y2,Z2,Y3,Z3,Y4,Z4):-rezolva(james,Y1,Z1),
rezolva(tom,Y2,Z2),
rezolva(bob,Y3,Z3),
rezolva(jim,Y4,Z4),
diferit(Y1,Y2,Y3,Y4),
diferit(Z1,Z2,Z3,Z4).

Interogări:

cinci

Leave a comment