Zad. Arytmetyka list. Poniższe reguły definiują liczbę elementów listy, ich sumę i średnią arytmetyczną. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dlugosc(0,[]). dlugosc(DlListy,[Glowa|Ogon]) :- dlugosc(DlOgona,Ogon), DlListy is DlOgona + 1. suma(0,[]). suma(SListy,[Glowa|Ogon]) :- suma(SBezGlowy,Ogon), SListy is SBezGlowy + Glowa. srednia(Sr,Lista) :- suma(S,Lista), dlugosc(D,Lista), Sr is S/D. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Umieść je w pliku arytm_list.pro Uruchom konsolę gprolog Wczytaj reguły poleceniem ['arytm_list']. Wywołaj je wpisując np. | ?- dlugosc(X,[1,2,3,4]). | ?- suma(X,[1,2,3,4]). | ?- srednia(X,[1,2,3,4]). +------------------------------------------------------------+ | LISTA WBUDOWANYCH PREDYKATÓW W GPROLOG | | http://www.gprolog.org/manual/html_node/gprolog024.html | +------------------------------------------------------------+ Zad. Stwórz relację kolor dla warzyw wg. schematu: natka zielona salata zielona papryka zielona pomidor czerwony papryka czerwona cytryna zółta papryka zółta Relacja smaczne definiuje zielone warzywa jako smaczne. Sprawdź czy papryka i cytryna są smaczne? UWAGA: - kod umieść w pliku warzywa.pro - otwórz konsolę poleceniem gprolog - załaduj program poleceniem ['warzywa.pro'] Zad. Rozwiąż równanie 2+x=4. UWAGA: Wartości zmiennych można zawęzić do określonej dziedziny. Polecenia fd_xxxx odnoszą się do Finite Domain Solver. Przykładowo: fd_domain(X,0,10) zawęzi wartości X do 0,1,2,...,10. Warunki dla wyrażeń FD: FD1 #= FD2 ogranicza FD1 do równości z FD2 FD1 #\= FD2 ogranicza FD1 do nierówności z FD2 FD1 #< FD2 ogranicza FD1 do bycia mniejszym niż FD2 FD1 #=< FD2 ogranicza FD1 do bycia mniejszym równym FD2 FD1 #> FD2 ogranicza FD1 do bycia większym niż FD2 FD1 #>= FD2 ogranicza FD1 do bycia większym równym niż FD2 Zad. Rozwiąż zadanie: cena za 72 pary spodni wyniosła -67,9- zł, gdzie pierwsza i ostatnia cyfra jest nieznana. Ile kosztowała jedna para spodni? Zad. Skonstruuj kwadraty magiczne 3x3. UWAGA: Można wykorzystać ograniczenia symboliczne, np.: fd_all_different(L) ogranicza elementy listy L do różnych Zad. Sudoku.