%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % KSP 19-5-6 1. Nejkratší program % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% p(S,K,X):-sort(S,[Y|T]),(Y>K,X=Y,!;p(T,K,X)). % nejlepší řešení účastníků (Roman Smrž) q(S,K,X):-setof(H,(member(H,S),H>K),[X|_]). % původní autorské řešení r(S,K,X):-sort([K|S],R),nextto(K,X,R). % extra řešení (Milan Straka) %%%%%%%%%%%%%%%%%%%%%%%%%% % KSP 19-5-6 2. Fronta % %%%%%%%%%%%%%%%%%%%%%%%%%% zretez(A-B, B-C, A-C). % zřetězení rozdílovych seznamů (potřeba pro vloz2) vloz(Fronta-[NovyPrvek|Y], NovyPrvek, Fronta-Y). % vloz(StaraFronta, NovyPrvek, NovaFronta) vloz2(X-X, NovyPrvek, [NovyPrvek|X]-X) :- var(X). % kdo nechápe vloz, ať si přečte vloz2 vloz2(StaraFronta-X, NovyPrvek, NovaFronta) :- zretez(StaraFronta-X, [NovyPrvek|Y]-Y, NovaFronta). odeber(X-X) :- var(X), fail. % odeber(StaraFronta, NovaFronta, Prvek) odeber([H|Zbytek]-X, Zbytek-X, H). je_prazdna(X-X) :- var(X). % je_prazdna(Fronta) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % KSP 19-5-6 3. Expertní systém % % pěkné a jednoduché řešení Jana Žáka % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % databaze.pl: q([ q('Je to kockovita selma?', [ q('Je to kocka?', kocka), q('Je to lev?', lev) ]), q('Je to psovita selma?',[ q('Je to pes?', pes), q('Je to liska?', liska) ]) ]). % program.pl: hadej :- write('Mysli si zvire...'), nl, q(Otazky), hadej(Otazky). hadej([]) :- write('Takove zvire neznam'). % prošli jsme celý strom hadej([q(Otazka,Ano)|Ne]) :- write(Otazka), nl, read(Odpoved), % vypiš otázku a přečti odpověď (Odpoved = ano, hadej(Ano)) ; % kladná odpověď, použij podvětve (Odpoved = ne, hadej(Ne)). % záporná odpověď, použij další větev hadej(Zvire) :- write('Myslis si zvire '), write(Zvire).