47163325 prolog probleme

3
24 Interogãri: 8)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ã in Prolog. In ce limbaj şi în ce domeniu e specializat fiecare? Codul în Prolog: %fapte nume(james).

Upload: stefan-popa

Post on 24-Sep-2015

261 views

Category:

Documents


6 download

DESCRIPTION

probleme

TRANSCRIPT

  • 24

    Interogri:

    8)PROGRAMATORI

    Enunul problemei:

    James,Tim, Bob i Jim, fiecare cunosc cte un limbaj de programare diferit i

    fiecare este specializat ntr-un domeniu diferit. Se cunosc urmtoarele:

    a)Cel ce programeaz n Java e specialist n biologie.

    b)Tom nu tie nici Prolog nici HTML, nici matematic.

    c)James nu cunoate nici Prolog, nici HTML, nici matematic .

    d)Specialistul n chimie nu programeaz n HTML.

    e)Bob e specialist n fizic i nu programeaz in Prolog.

    In ce limbaj i n ce domeniu e specializat fiecare?

    Codul n Prolog:

    %fapte

    nume(james).

  • 25

    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).

  • 26

    Interogri:

    9) DENSITATE

    Enunul problemei: Se d o baz de cunotine, se cere s se gseasc rile cu denitatea populaiei

    aproximativ egal.

    Codul n Prolog:

    query :- query(_), fail.

    query.

    query([C1,D1,C2,D2]) :-

    density(C1,D1),

    density(C2,D2),

    D1 > D2,

    T1 is 20*D1,

    T2 is 21*D2,

    T1 < T2.

    density(C,D) :-

    pop(C,P),

    area(C,A),

    D is (P*100)//A.

    % populations in 100000's

    pop(china, 8250).

    pop(india, 5863).

    pop(ussr, 2521).

    pop(usa, 2119).

    pop(indonesia, 1276).

    pop(japan, 1097).