Arvutiteaduse instituut
  1. Kursused
  2. 2021/22 sügis
  3. Programmeerimine (LTAT.03.001)
EN
Logi sisse

Programmeerimine 2021/22 sügis

  • Pealeht
  • Silmaringimaterjalid
  • Viiteid

14. kodutöö

1. Rekursiivne absoluutväärtus

Kirjuta rekursiivne funktsioon rek_abs, mis võtab argumentideks järjendi, mille elementideks võivad olla arvud ja/või järjendid. Igas alamjärjendis on jällegi arvud ja/või järjendid jne. Funktsioon peab tagastama uue sama kujuga andmestruktuuri, kus kõik arvud on asendatud nende absoluutväärtusega. Argumendiks antud järjendit ega ühtegi alamjärjendit muuta ei tohi.

Näide funktsiooni kasutamisest:

>>> rek_abs([2, -6, [8, -12, -12, [4, [-6], -3]], 7, [3.55, -3.55]])
[2, 6, [8, 12, 12, [4, [6], 3]], 7, [3.55, 3.55]]
>>> rek_abs([])
[]

VIHJE!

>>> isinstance([1, 2, 3], list)
True
>>> isinstance(435, list)
False

2. Väljasta liin

Kirjuta rekursiivne funktsioon väljasta_liin, mis võtab argumentideks eellase nime, järglase nime ja sugupuu sõnastiku ning väljastab ekraanile põlvnemiste ahela eellasest järglaseni, kui selline ahel leidub. Kui ahelat ei leidu, siis ei tohiks funktsioon midagi välja printida. Lisaks peab funktsioon tagastama tõeväärtuse True või False vastavalt sellele, kas liin leidub või ei. Sõnastikus on võtmeks sõnena nimi ning väärtuseks ennikuna (või järjendina) isa nimi indeksil 0 ja ema nimi indeksil 1.

Näide programmi tööst (sõnastiku väljund on ilustatud):

>>> sõnastik
{
  'Kalle': ('Teet', 'Maris'), 
  'Maris': ('Konstantin', 'Mari'), 
  'Rita': ('Teet', 'Maris'), 
  'Siim': ('Teet', 'Maris'), 
  'Mari': ('Karl', 'Leeni'), 
  'Teet': ('Joosep', 'Adele'), 
  'Adele': ('Johannes', 'Leida'), 
  'Konstantin': ('Viktor', 'Jelena'), 
  'Joosep': ('August', 'Emma'), 
  'Viktor': ('Nikolai', 'Maria')
}

>>> print("Kas liin leidub?", väljasta_liin('Leida', 'Kalle', sõnastik))
Leida
Adele
Teet
Kalle
Kas liin leidub? True

>>> print("Kas liin leidub?", väljasta_liin('Mari', 'Adele', sõnastik))
Kas liin leidub? False
  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused