Preskoči na glavno vsebino
Učilnica FRI 25/26
  • Domov
  • Koledar
  • Več
Slovenščina ‎(sl)‎
English ‎(en)‎ Slovenščina ‎(sl)‎ Македонски ‎(mk)‎ Русский ‎(ru)‎ 한국어 ‎(ko)‎
Trenutno uporabljate gostujoči dostop
Prijavite se
Učilnica FRI 25/26
Domov Koledar
Razširi vse Skrči vse
  1. Nadzorna plošča
  2. pef
  3. Generatorji ter izpeljani seznami, množice in slovarji
  4. Generalec

Generalec

Zahteve zaključka
Rok za oddajo: torek, 31. marec 2026, 09.40

Tokratna domača naloga je neobvezna, saj je snov bolj "dodatna". Vseeno priporočam, da se potrudite in jo rešite, saj vam bo poznavanje generatorjev/iteratorjev pomagalo razumeti, kako deluje Python. Pa tudi pri programiranju "nedodatnih" nalog v prihodnosti vam lahko pride prav; marsikaj bo na ta način rešljivo hitreje in preprosteje.

Če se zatakne, pišite. Z veseljem pomagam.


Za tokratne funkcije morate predpostaviti, da je argument pot generator. S klicem iter(pot) boste dobili iterator in če na dobljenem iteratorju kličete next bo vračala elemente poti. Seveda pa velja tudi for polje in pot ali kaj podobnega.

Generatorja/iteratorja, kot vemo, ne moremo, vprašati, koliko elementov bo zgeneriral, pa tudi indeksiranje (pot[n]) ne bo delovalo.

Generator lahko generira tudi zeloooooo dolge poti. Če se program zaradi tega noče ustaviti, ga pokončajte z rdečim kvadratkom zgoraj desno.

Argument ovire je množica.

Naloge

Napišite naslednje funkcije.

  1. zacetek(pot), ki vrne začetno polje poti. To ni nujno (0, 0). Pomislite, kako bi (oz. kako sem) na predavanju dobil prvi element od vas, ko ste bili v vlogi iteratorja.

  2. nto_polje(pot, n) vrne n-to polje generatorja. Šteti začnemo pri 1.

  3. zadane(pot, ovire) vrne True, če pot vsebuje kakšno oviro.

    Potrudite se nalogo rešiti s funkcijo any, ki ji podate generator.

  4. zadetki(pot, ovire) vrne generator (to je: fukcija vsebuje bodisi yield bodisi return (... for ... in ...)), ki vrne vsa polja na poti, v takem vrstnem redu, kot se pojavljajo na poti.

    Recimo, da generator generira pot (0, 0), (1, 0), (0, 0), (1, 0), (0, 0) ... in tako milijonkrat. Če na polju (1, 0) stoji ovira, mora vaš generator pol milijonkrat vrniti (1, 0).

  5. pot(smeri) prejme smeri (to je, zaporedje <, >, ^, v) in vrne generator, ki generira pot, ki jo opisujejo smeri. Pot se začne na (0, 0).

    Klic pot(">>^<") vrne generator, ki generira (0, 0), (1, 0), (2, 0), (2, 1), (1, 1).

    smeri so generator. Testi bodo (na nek način) preverili, ali vaša funkcija generira neskončno pot v desno, če je pot neskočno zaporedje znakov >.

Testi

  • testi.py testi.py
    24. marec 2026, 16:46
Trenutno uporabljate gostujoči dostop (Prijavite se)
Pridobi mobilno aplikacijo
Stran poganja Moodle
Obvestilo o avtorskih pravicah