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ę, dla
listy pustej 0)
- powiększy każdą z liczb na liście o 1 (zmieniamy wartosci na
starej liście)
- wyprodukuje nową listę z liczb z listy źródłowej powiększonych o 1
(zachowując kolejność)
- wyprodukuje listę liczb z listy zródłowej podzielnych przez 3
Uwaga: Listy odwraca wbudowana funkcja 'rev' (robiąc kopię) i 'ncrev'
(modyfikując listę).
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 równoczesną iterację po dwu listach.
Uwaga2: proste rozwiązanie buduje listę wynikową w odwrotnej kolejności
i używa 'ncrev'.
Zadanie 3
Napisać funkcję w Pop11 która mając dane dwie uporządkowane niemalejąco
listy liczb całkowitch połączy je w nową listę na której są wszystkie
liczby (z uwzględnieniem krotności) z list źródłowych w porządku
niemalejącym. Jeśli dana liczba
występuje n razy na pierwszej liście i k razy na drugiej to ma
wystąpić n+k razy na liście wynikowej.
Zadanie 4
Napisać funkcję w Pop11 która mając daną listę liczb, słów i przecinków
podzieli ją na odcinki oddzielone przecinkami. Każdy odcinek to lista,
wynik to lista list. Np:
[, 1 , 2 3 ala , 4]
ma dać
[[] [1] [2 3 ala] [4]]
Uwaga: Technicznie przecinek to też słowo, trzeba testować czy element
listy jest równy ",".
Zadanie 5
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 6
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 7
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 8
Napisać funkcję która mając dane drzewo, reprezentowane jako lista
której elemntani 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]