Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Logické programování Prezentace číslo 9.

Podobné prezentace


Prezentace na téma: "Logické programování Prezentace číslo 9."— Transkript prezentace:

1 Logické programování Prezentace číslo 9

2 Hra se zápalkami Jednoduchá „strategie“
% zacina hrat uzivatel a ve hre je 21 zapalek start :- hrac(21). hrac(1) :- !, write('Prohral jsi, beres posledni !'), nl. hrac(Poc) :- write('Pocet zapalek na stole:'), write(Poc), nl, cti(X), nl, Poc1 is Poc-X, pocitac(Poc1).

3 Hra se zápalkami pocitac(1) :- !,
write('Prohral jsem, beru posledni !'). pocitac(Poc) :- write('Pocet zapalek na stole:'), write(Poc), nl, X is (Poc-1) mod 5, write('Ja beru:'), write(X), nl, nl, Poc1 is Poc - X, hrac(Poc1). cti(X):- repeat, write('Kolik beres zapalek ? '), read(X), integer(X), X < 5, X > 0, !.

4 Dámy na šachovnici run :- write('Zadej rozmer sachovnice : '),
read(N), N > 3, cisla(N), dama(N,S), vypis(N,S), nl, nl, fail. run :- nl. % pro i-tou dámu najdi pozici v i-tém řádku % dama(I,Seznam-uz-umistenych-dam) dama(0,[]) :- !. dama(I,[[I,X]|T]) :- I1 is I -1, dama(I1,T), sl(X), lze([I,X],T).

5 Dámy na šachovnici % vygeneruj cisla 1..N v databazi
cisla(N):-abolish(sl/1), gen(N). gen(0):-!. gen(K):- K>0, asserta(sl(K)), K1 is K-1, gen(K1). % test vzajemneho neohrozovani se lze([A,B],[]). lze([A,B],[[X,Y]|T]) :- B \= Y, % A\=X urcite A+B =\= X+Y, A-B =\=X-Y, lze([A,B],T). ?- run. Zadej rozmer sachovnice : |: 8. [[8,4],[7,2],[6,7],[5,3],[4,6],[3,8],[2,5],[1,1]] ....

6 Dámy na šachovnici % lepsi vypis vypis(_,[]) :- nl.
vypis(N,[[A,B]|T]) :- pis(N,B), vypis(N,T). pis(0,_) :- !, nl. pis(K,B) :- K1 is K - 1, pis(K1,B), symbol(K,B). symbol(X,X) :- write(' o'), !. symbol(_,_) :- write(' .'). ?- run. Zadej rozmer sachovnice : |: 8. . . . o . o o . . . o o . . o o . . . o

7 Vhodná závaží % vygeneruj cisla 1..N v databazi
cisla(N):-abolish(c/1), gen(N). gen(0):-!. gen(K):- K>0, asserta(c(K)), K1 is K-1, gen(K1). start:- %vygeneruj cisla 1..40 cisla(40), c(A), c(B), B >= A, c(C), C >= B, D is 40-A-B-C, D >= C, % D > 0 automaticky testuj(A,B,C,D,40), write('Reseni: '),write(A-B-C-D), nl, fail. start.

8 Vhodná závaží % pouziti jednotlivých zavazi kam(0). % nepouzije se
kam(1). % leva strana kam(-1). % prava strana testuj(A,B,C,D,0):-!. testuj(A,B,C,D,X):- kam(Ka), kam(Kb), kam(Kc), kam(Kd), X is A*Ka+B*Kb+C*Kc+D*Kd, !, X1 is X-1, testuj(A,B,C,D,X1). ?- start. Reseni: yes

9 Derivace % d(Fce,Promenna,Vysledek) d(X,X,1) :- !.
d(C,X,0) :- atomic(C). d(-U,X,-A) :- d(U,X,A). d(U+V,X,A+B) :- d(U,X,A), d(V,X,B). d(U-V,X,A-B) :- d(U,X,A), d(V,X,B). d(C*U,X,C*A) :- atomic(C), C \= X, d(U,X,A), !. d(U*V,X,B*U+A*V) :- d(U,X,A), d(V,X,B). d(U/V,X,A) :- d(U*V^(-1),X,A). d(U^C,X,C*U^(C-1)*W) :- atomic(C), C \= X, d(U,X,W). d(log(U),X,A*U^(-1)) :- d(U,X,A). ?- d(x^5-3*x^2+7,x,V). V = 5*x^(5-1)*1-3*(2*x^(2-1)*1)+0

10 Test inteligence A B C X ? Možnosti: i ii iii

11 Test inteligence % analogy(Obr1,Obr2,Obr3,Moznosti,Vysledek)
analogy(A,B,C,Moznosti,X) :- vztah(A,B,Pravidlo), vztah(C,X,Pravidlo), clen(X,Moznosti). clen(X,[X|_]). clen(X,[_|Y]) :- clen(X,Y). vztah(uvnitr(F1,F2), uvnitr(F2,F1), inverze). vztah(nad(F1,F2),nad(F2,F1),otoc-vertikalne).

12 Test inteligence % analogy(Obr1,Obr2,Obr3,Moznosti,Vysledek)
?- analogy(uvnitr(ctverec,trojuhelnik), uvnitr(trojuhelnik,ctverec), uvnitr(kruh,ctverec), [uvnitr(kruh,trojuhelnik), uvnitr(ctverec,kruh), uvnitr(trojuhelnik,ctverec)],X). X = uvnitr(ctverec,kruh) ;

13 Eliza Ukázka komunikace > I am depressed.
> Hello, I am Eliza. How are you today? > I am depressed. > How long have you been depressed? > For several days. Since I met my father. > Can tell me more about your family? > They are always busy. > Hmm. Can you elaborate on it? > I hate weekends. > Does anyone else in your family hate weekends? ….

14 Eliza % vzor(Veta,Reakce) vzor([i,am,X],[how,long,have,you,been,X]).
vzor([i,feel,X],[do,you,often,feel,that,way]). vzor([i,hate,X], [does,anyone,else,in,your,family,hate,X]). vzor(Veta,[can,you,tell,me,more,about,your,family]) :- clen(X,Veta), family(X). family(father). family(mother). vzor(Veta,[do,not,be,rude]):- clen(X,Veta),taboo(X). vzor(_,[please,go,on]). % catchall


Stáhnout ppt "Logické programování Prezentace číslo 9."

Podobné prezentace


Reklamy Google