Metody Programowania - Lista 4
Zadanie 1
Napisać funkcję w Pop11 która mając zadaną listę liczb całkowitch:
- obliczy ich sumę
- znajdzie wartość elementu maksymalnego (ma zwracać liczbę)
- powiększy każdą z liczb na liście o 1
- wyprodukuje nową listę na której liczby są w odwrotnej
kolejności.
Uwaga: Listy odwraca wbudowana funkcja 'rev', w czwartym punkcie
chodzi o rozwiązanie które nie używa tej funkcji.
Zadanie 2
Napisać funkcję w Pop11 która mając zadane dwie listy liczb
całkowitch równej długości:
- wyprodukuje listę par odpowiadjących sobie liczb na obu listach.
Każda para ma być reprezentowana przez listę dwuelementową.
- wyprodukuje listę sum odpowiadjących sobie liczb na obu listach
Uwaga1: instrucja for postaci 'for el1 el2 in list1 list2 do ...'
pozwala na rownoczesną iterację po dwu listach.
Uwaga2: proste rozwiązanie buduje listę wynikową w odwrotnej kolejności
i używa 'rev'.
Zadanie 3
Napisać funkcję która mając dane listę (a właściwie drzewo) reprezentujące
wyrażenie logiczne i listę wartości zmiennych obliczy wartość tego wyrażenia
dla tych zmiennych. Np.
wartość_l([and x1 [or x2 x3]], [[x1 true] [x2 false] [x3 true]])
Tzn. wyrażenie jest listą która ma dwa argumenty, będące zmiennymi lub
wyrażeniami. "and" oznacza iloczyn logiczny, "or" sumę logiczną, "not"
negację (dla uproszczenia można pominąć inne operatory).
Zadanie 4
Napisać funkcję w Pop11 która mając dane drzewo wyrażenia arytmetycznego
takie jak akceptuje program przykładowy
obliczy:
- ilość wystąpień stałych w tym wyrażeniu
- ilość wystąpień zmiennych w tym wyrażeniu
- ilość wystąpień operatorów w tym wyrażeniu
Zadanie 5
Napisać funkcję która mając dane drzewo wyrażenia arytmetycznego
takiego jak w wyżej, wyprodukuje listę argumentów i wartości
w postaci odwrotnej polskiej (tzn. tak że najpierw mamy listę
odpowiadającą pierwszemu argumentowi, potem drugiemu a na końcu
operator).
Uwaga: jak zwykle, wygodnie budować listę w odwrotnej kolejności
a potem odwracać.
Zadanie 6
Napisać funkcję która mając dane drzewo, reprezentowane jako lista
której elemntami są atomy (liczby i słowa) oraz podrzewa (czyli listy)
"spłaszczy" je, tzn wypodukuje listę wszystkich atomów, zachowując ich
kolejność przy wypisywaniu. np:
[[[ala 1] 2 [3 4]] [ma 5 6] [[kota 7] 8]]
ma dać
[ala 1 2 3 4 ma 5 6 kota 7 8]