14. praktikumi harjutused
0. Sügavus
Kirjuta rekursiivne funktsioon sügavus, mille parameetriks on listide list (st listi elementideks on listid, mille elementideks võivad omakorda olla listid jne) ning mis tagastab selle struktuuri sügavuse – see tähendab, mitu taset liste on välimise listi sees maksimaalselt.
Näide.
>>> sügavus([]) 0 >>> sügavus([[],[]]) 1 >>> sügavus([[],[[[[]],[]],[]]]) 4
1. Ekstravertne kuusnurk
Kirjuta rekursiivne funktsioon, mis joonistab taolise fraktali:

2. Failipuu
Kirjuta rekursiivne funktsioon, mis kuvab ekraanile etteantud kausta sisu „failipuu” kujul, nt
c:\muusika
eesti_muusika
jäääär
Supilinn.mp3
Punased_kardinad.mp3
Ehala
Jahikoera_armuulg.mp3
Lambalaul.mp3
Päikeseratas.mp3
Amelie
Le Banquet.mp3
Au Quai.mp3
track01.mp3
track12.mp3
Vihje: rekursiivsetel väljakutsetel pea arvet ka selle üle, kui „sügaval” töötlemisjärg algse kausta suhtes asub – selle järgi saab panna paika õige taande.
Vihje: siin on täiesti võimalik ja soovitatavgi kombineerida omavahel tsüklit ja rekursiooni.
3. Suurima faili leidmine
Kirjuta rekursiivne funktsioon, mille parameetriks on kausta nimi ja mis tagastab kõige suurema selles kaustas (või mõnes alamkaustas) leiduva faili nime ja suuruse (st funktsioon peab tagastama paari ehk 2-elemendilise enniku).
Vihje:
import os suurus = os.path.getsize(failinimi)
4. Introvertne ruut
Kirjuta rekursiivne funktsioon taolise fraktali joonistamiseks:

5. Labürint
Labürint on antud mitmerealise sõnena, kus sümbol # tähistab seina ja tühik tähistab vaba ala, nt
labürint = ''' ############# # ## # # # ### ## ## # # ### ## # # # ##### # # ### # ############# '''
Kirjuta rekursiivne funktsioon, mille parameetriteks on suvaline labürint, lähtepunkti koordinaadid ja sihtpunkti koordinaadid ning mis tagastab järjendina sammud, mille abil on võimalik jõuda lähtepunktist sihtpunkti.
Küsimus: millist situatsiooni saab käsitleda baasjuhtumina?
Vihje: astu samm läbiuurimata suunas ja lahenda sama ülesanne uuest lähtepunktist. Lõpmatu korduse vältimiseks tuleks pidada meeles juba läbi uuritud kohtade loetelu.
Lisa: proovi panna Pykkar labürindist teed leidma.