Представяне на дървета в Python, блог за шифроване
Вече сме готови да изграждаме дървесни програми в Python. Дървото се състои от възли, които в зависимост от функциите, свързани с тях, могат да имат дъщерни възли. Някои възли връщат параметри, предадени на програмата, други - константи, но най-интересни са възлите, които връщат резултата от някаква операция на техните дъщерни възли.
Създайте нов файл gp.py и той има четири класа - fwrapper, node,
paramnode и constnode:
клас fwrapper: def init (самостоятелно, функция, детски брой, име):
def ____ init (самостоятелно, fw, деца):
резултати = [n.evaluate (inp) за n в self.children] върне self.function (резултати)
клас paramnode: def __init __ (self, idx): self.idx = idx
def оценка (self, inp): връщане на inp [self.idx]
клас constnode: def __init __ (self, v): self.v = v
def оценка (self, inp): връщане self.v
Тези класове са предназначени за следните цели:
Обвивка за функции, които ще се намират във възли, представляващи функции. Нейните членове са името на функцията, самата функция и броят на взетите параметри.
Клас функционални възли (с потомци). Инициализирано от екземпляр на класа fwrapper. Методът за оценка оценява стойностите на дъщерни възли и ги предава на функцията, представена от този възел като параметри.
Клас възли, които просто връщат един от параметрите, предадени на програмата. Неговият метод за оценка връща параметър, съответстващ на стойността idx.
Възли, връщащи константи. Методът за оценка просто връща стойността, с която екземплярът е инициализиран.
Ще ви трябват и функции, които ще бъдат извикани, когато посетите възлите. Ще трябва да напишете такива функции и да ги предадете
заедно с броя на имената и параметрите в конструктора на клас fwrapper.
Добавете следния списък с функции към вашия gp.py файл: