Institute of Computer Science
  1. Courses
  2. 2021/22 fall
  3. Computer Programming (LTAT.03.001)
ET
Log in

Computer Programming 2021/22 fall

  • 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
  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment