Arvutiteaduse instituut
Logi sisse
  • English
  • Kursused
  • 2020/21 sügis
  • Programmeerimine (LTAT.03.001)

Programmeerimine 2020/21 sügis

  • Pealeht
  • Silmaringimaterjalid
  • Viiteid

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.

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:
Tartu Ülikooli arvutiteaduse instituudi kursuste läbiviimist toetavad järgmised programmid:
iktp regionaalarengu fondi logo euroopa sotsiaalfondi logo tiigrilikooli logo it akadeemia logo