Metody Programowania - Lista 10

Zadanie 1

Zapoznać się z przykładem do objectclass

Defincje:

define :class drzewo;
    slot lewe = [];
    slot prawe = [];
enddefine;

define :class drzewo_odwracalne;
    is drzewo;
    slot ojciec [];
enddefine;

vars d1 = consdrzewo(newdrzewo(), []);

vars do1 = consdrzewo_odwracalne([], [], []);
pokazują jak można zrealizować drzewa binarne przy pomocy klas. Napisać procedurę która mając dane drzewo złożone z węzłów klasy "drzewo" wyprodukuje drzewo zlożone z węzłów klasy "drzewo_odwracalne" o tej samej strukturze. Przy tym pole "ojciec" każdego węzła ma wskazywac na węzeł nadrzędny (dla korzenia to pole ma zawierać listę pustą).

Zadanie 2

Mamy następujący schemat gwiazdy magicznej:
   X
X X X X
 X   X
X X X X
   X
Należy rozmieścić liczby od 1 do 12 w miejsce X-ów, tak by sumy liczb na poszczególnych ramionach gwiazdy były równe. Napisać program znajdujący rozwiązania. Ile wywołań rekursywnych on wymaga?