diff --git a/expert.pl b/expert.pl index 9ce55fa..a0f2980 100644 --- a/expert.pl +++ b/expert.pl @@ -60,19 +60,32 @@ termin(XS) :- ilosc(X) :- - nb_current(ilosc,_), - nb_getval(ilosc,I), + ludzie(L), + length(L,X). + +maxIlosc(X) :- + ilosc(Y), + X >= Y. + + + + + +zabytki :- + ludzie(L), + \+ forall(member(C,L), C < 65). + + +ludzie(X) :- + nb_current(ludzie,_), + nb_getval(ludzie,L), !, - X = I. - -ilosc(X) :- - format("ilu ludzi chce jechac?\n"), - read(I), - nb_setval(ilosc,I), - X = I. - - - + X = L. +ludzie(X) :- + format("podaj wiek wszystkich osob (np. [5,7,25,65])\n"), + read(L), + nb_setval(ludzie,L), + X = L. cena(X) :- nb_current(maxCena,_), @@ -95,9 +108,13 @@ currentWakacjeAll(X) :- clear :- - forall(member(A, [kraj,teren, termin, maxCena, dzieci,all,ilosc]), nb_delete(A)). + forall(member(A, [kraj,teren, termin,ludzie, maxCena, dzieci,all,ilosc]), nb_delete(A)). + + +znajdzWakacje :- znajdzWakacje(_). + znajdzWakacje(Y) :- wakacjeAll(All), nb_setval(all,All), @@ -108,7 +125,7 @@ znajdzWakacje(Y) :- include(odpowiedniaCena, X,Y), format("\n\n\n"), - ansi_format([bold],"O to wszystkie oferty ktore odpowiadaja twoim preferencja i ktore odpowiadaja ci finansowo\n",[]), + ansi_format([bold],"O to wszystkie oferty ktore odpowiadaja twoim preferencjom i ktore odpowiadaja ci finansowo\n",[]), forall(member(M,Y), wyswietlWakacje(M)), clear. @@ -128,7 +145,11 @@ znajdzWakacje([X|XS],[X|_]) :- delete(W,X,W2), nb_setval(all,W2), znajdzWakacje(XS,W2). - +znajdzWakacje(XS,[X|_]) :- + znajdzPWakacje(W), + delete(W,X,W2), + nb_setval(all,W2), + znajdzWakacje(XS,W2). znajdzPCechy(P,Y2) :- znajdzPWakacje(W), @@ -155,10 +176,6 @@ sprawdzPCeche(termin(X)) :- -niesprecyzowanyKraj :- - pref(kraj, cokolwiek). - - wyswietlCeche(pref(P,X)) :- format("~w: ~w\n",[P,X]). wyswietlCeche(prefb(P,X)) :- @@ -174,14 +191,15 @@ wyswietlWakacje(w(N,C,L)) :- ilosc(I), format("cena za osobe: ~w\n", [C]), C2 is I * C, - format("dla ~w osob wyniesie to lacznie ~w\n", [I,C2]), + format("dla ~w osob wyniesie to lacznie ", [I]), + ansi_format([bold], "~w\n", [C2]), forall(member(X,L), wyswietlCeche(X)), format("\n"). wakacjeAll([ w(zakopane, 1000, [pref(kraj,polska), pref(teren,gory)]) , w(hawaje, 3000, [termin([6,7,8]), pref(kraj,usa), pref(teren, morze)]) , w(hawaje, 2000, [termin([1,2,3,4,5,9,10,11,12]), pref(kraj,usa), pref(teren,morze)]) - , w(himalaje, 4000, [niesprecyzowanyKraj, pref(teren, gory), prefb(dzieci, nie)]) + , w(himalaje, 4000, [pref(teren, gory), prefb(dzieci, nie)]) , w(hel, 1200, [pref(teren, morze), pref(kraj, polska), termin([5,6,7,8])]) , w(mazury, 800, [pref(teren, jezioro), pref(kraj, polska), termin([4,5,6,7])]) , w(bieszczady, 1200, [pref(teren, gory), pref(kraj, polska)])