Metody Programowania - Lista 4


Zadanie 1

Napisać funkcję w Pop11 która mając zadaną listę liczb całkowitch: 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:

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:

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]