Sodobnejši sesalci
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.
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.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.Napišite funkcijo
predniki(model), ki vrne seznam prednikov modela. Klicpredniki("S8SE")vrne["S8", "S2P8", "S2", "S1"], saj je S8SE izpeljan iz S8, ta pa iz S2P8, ta iz S2, ta pa iz S1. Klicpredniki("S1")vrne prazen seznam, saj S1 nima prednikov.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+.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
- 7 April 2026, 2:33 PM