Hetedik házi feladat


paranthesis_depth (1 pont)

Írjunk egy parenthesis_depth nevű függvényt, aminek
bemenete
egy string, ami jól van zárójelezve és zárójeleken kívül csak kisbetűs, alfanumerikus karaktereket és műveleti jeleket tartalmaz
kimenete
egy ugyanolyan hosszú string, amiben a zárójeleket meghagyjuk, azon kívül pedig minden karaktert lecserélünk egy számra, ami akkora, ahány mélyen volt az a karakter zárójelek közé zárva
Kilencnél több zárójel nem lesz egymásba ágyazva!

Példa


descartes_product (1 pont)

Írjunk descartes_product nevű függvényt, aminek
bemenete
tetszőleges számú argumentum, melyek mindegyike egy halmazt reprezentál; duplikátumokat nem tartalmazó, iterálható objektum
kimenete
a bemenetek Descartes szorzata
Ha a bemenetben n-db halmaz van, akkor a kimenet n-hosszú tuple-ök listája legyen!
A kimenetben a tuple-ök sorrendje nem számít, de a tuple-ökön belül azt a sorrendet kell tartani, amiben a bemeneti listák voltak.
Ha a bemenetben akár egyetlen üres halmaz is található, akkor az eredmény egy üres lista legyen.

Példa

Segítség

Először csináljuk meg úgy, hogy 0 vagy 1 darab halmazra működjön.Ezután alkalmazhatunk rekurziót: vegyük n-1 darab halmaz Descartes szorzatát, majd csináljunk vele valamit, amivel az n-edik halmaz elemeit hozzátesszük.

Érdekesség

Ha a bemeneti halmazok rendre n1, n2 ... nk eleműek,akkor a kimenet elemszáma n1*n2 ... *nk lesz.Sőt, ez maga a szorzás definíciója bővebben itt

matrixlog (1 pont)

A függvényünk bemenete:Az n-dimenziós mátrix azt jelenti, hogy egy olyan lista, aminek minden eleme egy (n-1)-dimenziós mátrix. Az 1-dimenziós mátrix csak simán számok listája.

A mátrixban minden számot szeretnénk a kettes alapú logaritmusára megváltoztatni, de csak két tizedesjegy pontossággal szeretnénk az új számokat. Adjuk vissza az így kapott új mátrixot!

Segítség:


tree_cut (2 pont)

A kertészünk nagyon lelkes. Miután végzett a kertünkkel, a memóriában levő fákat is megnyesi. Egy nyesés abból áll, hogy levágja a fa összes levelét. Ezek a gráf értelemben vett levelek, tehát azok, ahova csak egy él mutat a fából, jelen esetben ezek az üres listák. A nyesés után a gráf új elemei válhatnak levelekké, de akkor azokat csak a következő nyesés távolítaná el.

Nézzünk egy példát. Egy nyesés után ebből a fából:
[[[[], []], [[], []]], [[], [], []]]
Ez lesz:
[[[], []], []]
(Ugyanezek a fák így néznek ki Python Tutor-on)

A feladat a tree_cut nevű függvény megírása. Ez a függvény egy paramétert vár:A függvény térjen vissza a megnyesett fával!

Segítség:


calculator_basic (1 pont)

Írjunk egy kifejezéseket értelmező osztályt, ami elkészít egy megadott sztringnek a kifejezésfáját.megtekinthető itt

Figyelem!


calculator_paranthesis (2 pont)

Egészítsük ki a számológép Node osztályát, hogy tudjon zárójeleket kezelni.
Az előző gyakorlaton volt egy hasznos függvény, ami a zárójelekben található kifejezéseket lecserélte dollárjelekre.Kell tudnunk tesztelni, hogy egy adott kifejezés teljes egészébenzárójelben van-e, ehhez is használható az előbb említett dollárjelre cserélő kód.

calculator_function (2 pont)

Ezen feladatban tovább kell fejleszteni a számológép Node osztályát úgy, hogy most már tudjon bizonyos beépített függvényeket kezelni:Figyelem, a függvények tekinthetőek egyváltozós operátoroknak, vagyis a kifejezésfában egy csúcs lehet "sin", "cos" vagy "!" és ekkor az egyik gyereke legyen az, aminek a szinuszát, koszinuszát vagy faktoriálisát akarjuk venni.

Segítség

Megjegyzés

A faktoriális hasában mindig nem-negatív egész szám fog állni, bár létezik általánosítása, amivel tört szám faktoriálisát is lehet definiálni: gamma függvény.