Zadanie 1 Zdefiniuj predykat polflag(L,F) odnoszący sukces, jeśli L jest listą zawierającą tylko stałe b i c oraz F jest listą tej samej długości i zawierająca tyle samo elementów b i c co L, ale wszystkie elementy b znajdują się na początku listy F, a wszystkie elementy c na koncu listy. Program powinien działać poprawnie dla ustalonego pierwszego argumentu. Przykład zapytania, które powinno odnieść sukces: ?-polflag([c,b,c,b,c],[b,b,c,c,c]). Zadanie 2 Zdefiniuj predykat lagodny(L) odnoszący jednokrotny sukces jeśli L jest listą liczb naturalnych kończącą się zerem i o tej własności, że dla każdego elementu listy, oznaczmy go przez n, jeśli n<>0 to n-1 kolejnych elementów po n tez jest <>0. Przykłady zapytań, które powinny odnieść sukces: ?-lagodny([0]). ?-lagodny([0,0,0,0]). ?-lagodny([2,4,6,5,3,3,1,1,0]). ?-lagodny([4,3,5,2,2,1,1,0,1,3,2,1,0,0,4,1,1,1,0,2,1,0]). Przyklady zapytań, które powinny odnieść porażkę: ?-lagodny([7]). ?-lagodny([3,2,1]). ?-lagodny([7,4,2,1,0]). ?-lagodny([3,2,1,0,0,5,4,3,2,0]). Zadanie 3 Macierz reprezentowana jest jako lista list, kolejne listy to kolejne kolumny macierzy. Zdefiniuj predykat pierwsze(M,P) odnoszący jednokrotny sukces jeśli M jest macierzą a P jest listą, która ma długość równą liczbie wierszy macierzy, i w której element z i-tej pozycji jest indeksem (tzn. numerem kolumny) pierwszego niezerowego elementu w i-tym wierszu macierzy M. Jeśli i-ty wiersz zawiera same zera, to wartość i-tego elementu P powinna być 0. Program powinien działać poprawnie dla ustalonego pierwszego argumentu. Przykłady zapytań, które powinny odnieść sukces: ?-pierwsze([[0,2],[3,3]],[2,1]). ?-pierwsze([[0,0],[0,1]],[0,2]). ?-pierwsze([[0,0,2],[0,0,3],[0,5,3]],[0,3,1]). Przykłady zapytań, które powinny odnieść porażkę: ?-pierwsze([[0,2],[3,3]],[1,0]). ?-pierwsze([[0,0],[0,1]],[1,0]). ?-pierwsze([[0,0,2],[0,0,3],[0,5,3]],[3,3,2]).