Skip to main content
Učilnica FRI 25/26
  • Home
  • Calendar
  • More
English ‎(en)‎
English ‎(en)‎ Slovenščina ‎(sl)‎ Македонски ‎(mk)‎ Русский ‎(ru)‎ 한국어 ‎(ko)‎
You are currently using guest access
Log in
Učilnica FRI 25/26
Home Calendar
Expand all Collapse all
  1. Dashboard
  2. pef
  3. Rekurzija
  4. Sodobnejši sesalci

Sodobnejši sesalci

Completion requirements
Due: Tuesday, 14 April 2026, 9:40 AM

Model S1 -- prvi model sesalca, ki ga je izdelalo podjetje Sesalci Matej -- je sicer še vedno priljubljen, vendar že dokaj star. S1 je znal le sesati.

  • Na osnovi modela S1 so izdelali tri različne modele: {"S1A", "S2", "S3"}: S1A je imel še funkcijo "turbo" (1.8x hitrejše sesanje), S2 je imel zaslon in več tipk, S3 pa prav tako "turbo", vendar drugačen design.

  • Na osnovi S3 so izdelali S3A; ta model ima poleg vsega, kar ima S3 še globinsko sesanje in poseben program za odstranjevanje mačjih dlak.

  • S1A je bil slepa ulica.

  • Na osnovi S2 so izdelali S2+ (ta poleg vsega, kar ima S2, obvlada še vrnitev na izhodišče in rekurzivno sesanje), S2X (k S2 dodaja samo vrnitev na izhodišče) in S2P8 (med sesanjem predvaja reklamna sporočila).

  • Na osnovi S2P8 so izdelali S8, ki je nekoliko dražji, funkcionalno pa ne dodaja ničesar k S2P8.

  • Na osnovi S8 so izdelali ... in tako naprej. Vse povezave med modeli in lastnosti so našteti v testih.

Pri tej domači nalogi lahko pišete rekurzivne ali nerekurzivne funkcije. Nekatere bo lažje pisati tako, nekatere drugače. Če boste funkcijo, ki jo je bolj naravno narediti nerekurzivno, poskusili napisati rekurzivno, bo to lahko zoprno. In obratno; če boste funkcijo, ki zahteva rekurzijo, pisali nerekurzivno, boste morali uporabljati stvari, ki se jih (še?) nismo učili.

  1. Napišite funkcijo stevilo_izpeljank(model), ki vrne število vseh modelov, ki so bili posredno ali neposredno izpeljani iz podanega modela.

    Klic stevilo_izpeljank("S2P8") vrne 3, ker je bil iz S2P8 izpeljan S8, iz njega pa S8SE in S8PRO.

    Klic stevilo_izpeljank("S1A") vrne 0, saj na osnovi tega modela ni nastal noben drug model.

  2. Napišite funkcijo izpeljanke(model), ki vrne množico vseh modelov, ki so bili posredno ali neposredno izpeljani iz podanega modela.

    Klic izpeljanke("S2P8") vrne {"S8", "S8SE", "S8PRO"}.

    Klic izpeljanke("S1A") vrne prazno množico, saj na osnovi tega modela ni nastal noben drug model.

  3. Napišite funkcijo predniki(model), ki vrne seznam prednikov modela. Klic predniki("S8SE") vrne ["S8", "S2P8", "S2", "S1"], saj je S8SE izpeljan iz S8, ta pa iz S2P8, ta iz S2, ta pa iz S1. Klic predniki("S1") vrne prazen seznam, saj S1 nima prednikov.

  4. Napišite funkcijo lastnosti_modela(model), ki vrne vse funkcije, ki jih ima model.

    Klic lastnosti_modela("S8SE") vrne {"sesanje", "turbo", "zaslon", "vrnitev na izhodišče", "reklamna sporočila"}, saj S8SE obvlada vse funkcije, ki jih obvlada S2P8 (to so: sesanje, zaslon, vrnitev na izhodišče in reklamna sporočila), pa tudi turbo, ki ga ima S3A, ki je prav tako izpeljan iz S2P8.

    Klic lastnosti_modela("S1") vrne {"sesanje"}, saj S1 obvlada samo sesanje.

    Klic lastnosti_modela("S2+") vrne {'sesanje', 'zaslon', 'več tipk', 'rekurzivno sesanje', 'vrnitev na izhodišče'}. Sesanje je "podedoval" po S1, zaslon in več tipk po S2, vrnitev na izhodišče in rekurzivno sesanje pa dodaja S2+.

  5. Napišite funkcijo zaostanek(model), ki pove, kako zaostal je model. Zaostanek modela S2P8 je 2, saj so iz njega izpeljali S8 iz S8 pa S8PRO. Zaostanek modela S2 je 3, saj so iz njega izpeljali, recimo, S2P8, iz tega S8 in iz njega S8SE. (Iz S2 so sicer izpeljali tudi S2+ in iz njega S2++; po tej "liniji" bi bil zaostanek samo 2, vendar funkcija vrne "največji zaostanek".)

Testi

  • testi.py testi.py
    7 April 2026, 2:33 PM
You are currently using guest access (Log in)
Get the mobile app
Powered by Moodle
Obvestilo o avtorskih pravicah