izpitni_roki
V tem (komajda) modulu so v nekaj datotekah shranjene
pomožne in glavne funkcije, s katerimi naredimo html stran.
izpitni_roki.osnovno
V tej datoteki so definirani razni razredi in funkcije, ki jih potrebujemo za lažje generiranje končne html strani.
- class izpitni_roki.osnovno.HtmlPredloga(ime_predloge, **kwargs)
Bases:
objectPredloga za html kodo, ki ji podamo parametre in jo lahko lepo oblikujemo. Pripadajoča html datoteka
predloge/odstavek.htmlje npr.<div class="{{razred}}"> <p>{{besedilo}}</p> </div>
Ključne besede (obdane z dvojnimi zavitimi oklepaji) kasneje nadomestimo z dejansko vsebino, npr.
>>> str(HtmlPredloga("odstavek", razred="raz", besedilo="Hojla, bralec!")) <div class="raz"> <p>Hojla, bralec!</p> </div>
- nastavi_parametre(**kwargs)
Prepiše trenutne vrednosti, ki pripadajo ključnim besedam, s podanimi. Pri nastavljanju parametrov poskrbimo, da se zamiki vrstic ohranjajo, tj.
zamik vstavljene vrtice = zamik ključa + prejšnji zamik vstavljene vrstice- Parameters:
kwargs – (nekateri ali pa vsi) ključi, ki se pojavijo v predlogi
- Returns:
- Raises:
ValueError, če katerih od podanih kwargov ni med ključi v predlogi.
- class izpitni_roki.osnovno.IDGenerator
Bases:
objectRazred, s katerim polepšamo kodo in se izognemo dolgim guidom.
- NASLEDNJI_ID = 1
- static generiraj_id() int
Zgenerira naslednji id. Zaporedni klici vrnejo id-je 1, 2, 3 …
- Returns:
naslednji id
- class izpitni_roki.osnovno.IDTerIme(ime: str)
Bases:
objectNadrazred za razna polja v razredu
izpitni_roki.osnovno.IzpitniRok(), ki poleg dejanske vrednosti (ime) potrbujejo še id.Implementira tudi leksikografsko urejenost nizov, ki upošteva slovensko abecedo, razširjeno s črkama ć in đ (a b c č ć d đ e f …).
- PRIPADNIKI = {}
- static naredi_objekt(podrazred: Type[Predmet | Program | Letnik | Rok | Izvajalec | Obdobje], ime: str, *args)
Naredi objekt danega podrazreda razreda IDTerIme
- Parameters:
podrazred – izbrani podrazred
ime – polje ime
args – morebitni preostali parametri za konstruktor (npr. pri
izpitni_roki.osnovno.Obdobje()).
- Returns:
objekt danega podrazreda s podanim imenom
- static vse_vsa() str
Oblika besede “vse” glede na spol.
- Returns:
"vse"
- class izpitni_roki.osnovno.IzpitniRok(datum: datetime, predmet: Predmet, programi: List[Program], letnik_i: Letnik | List[Letnik], rok: Rok, izvajalci: List[Izvajalec], obdobje: Obdobje, ics_vrstice: str)
Bases:
objectOsnovne informacije o izpitnem roku. Ta je opisan s predmetom, seznamom programov, seznamom pripadajočih letnikov (oba sta enako dolga), rokom (prvi, drugi …), seznamom izvajalcev in izpitnim obdobjem.
- property ics_vrstice
- id() str
Iz id-jev polj tega objekta ustvari id tega objekta. Vsebuje le knjižnici jQuery prijazne znake.
- Returns:
S podčrtaji ločeni id-ji polj predmet, programi, letnik, rok, izvajalci in obdobje. Id-ji za polja, ki so seznami (programi, izvajalci), so id-ji elementov danega seznama, ločeni z
x.
- ignoriraj() bool
Pove, ali je treba rok ignorirati.
- Returns:
ime predmeta se začne z zvezdico
- osnovni_opis() str
Vrne poenostavljen prikaz izpitnega roka (datum in predmet).
- Returns:
Za izpitni rok Topologije, ki se zgodi 25. 10. 2022, bomo dobili
"25. oktober 2022 (torek), Topologija"
- preveri()
Preveri, ali so vsa polja neprazna, in ali so programi in letniki enako dolgi
- Returns:
- Raises:
ValueError, če je kateri od pogojev kršen
- prikazi_datum() str
Polje datum pretvori v berljiv niz. Tako se npr. 3. 10. 2022 pretvori v niz
"3. oktober 2022 (ponedeljek)".- Returns:
berljiva predstavitev datuma
- prikazi_izvajalce()
Lepo prikaže izvajalce v skladu z
izpitni_roki.osnovno.IzpitniRok._prikazi_neprazen_seznam()- Returns:
npr.
"Ana, Beno in Cene"
- prikazi_smer_in_letnik()
Prikaže smer(i) ter letnik(e) v lepo berljivi obliki.
- Returns:
npr.
<b>Finančna matematika</b>, 3. letnik<br> <b>Matematika</b>, 3. letnik<br> <b>Pedagoška matematika</b>, 2. letnik
- static zdruzi_roka(izpitni_rok1: IzpitniRok, izpitni_rok2: IzpitniRok) IzpitniRok
Spoji izpitni rok za isti predmet na dveh smereh v enega samega. Pazi, da se datuma, imeni predmeta, roka in obdobji ujemajo.
- Parameters:
izpitni_rok1 – izpitni rok
izpitni_rok2 – izpitni rok
- Returns:
spoj obeh izpitnih rokov: programi, letniki, izvajalci in ics_vrstice so ‘unija’ vhodnih rokov, ostala polja ostanejo nespremenjena.
- Raises:
ValueError če se ne ujemajo stvari, ki bi se morale
- class izpitni_roki.osnovno.Izvajalec(ime: str)
Bases:
IDTerIme- IZDANA_OPOZORILA = {}
- PROBLEMATICNI = {'Berk Skok Aleš': 'Aleš Berk Skok', 'Boc Thaler Luka': 'Luka Boc Thaler', 'Cabello Justo Sergio': 'Sergio Cabello Justo', 'Depolli Steiner Katja': 'Katja Depolli Steiner', 'Drinovec Drnovšek Barbara': 'Barbara Drinovec Drnovšek', 'Govekar Leban Darja': 'Darja Govekar Leban', 'Govekar Okoliš Monika': 'Monika Govekar Okoliš', 'Kink Peter Marijan': 'Peter Marijan Kink', 'Kink Peter Marjan': 'Peter Marjan Kink', 'Nguyen Wills Ton Minh': ' Wills Ton Minh Nguyen', 'Puklek Levpušček Melita': 'Melita Puklek Levpušček', 'Romih Gašper Domen': 'Gašper Domen Romih', 'Simpson Alexander Keith': 'Alexander Keith Simpson', 'Zozaya Ursuegui Andoni': 'Andoni Zozaya Ursuegui', 'Šadl Praprotnik Ada': 'Ada Šadl Praprotnik'}
- class izpitni_roki.osnovno.Koledar(smer: str, izpitni_roki: List[IzpitniRok], ics_vrstice: str)
Bases:
objectOsnovne informacije o koledarju
- ics_vrstice: str
- izpitni_roki: List[IzpitniRok]
- prilagodi_ics_opis(nadomestno_ime: str) str
- smer: str
- class izpitni_roki.osnovno.Letnik(ime)
Bases:
IDTerIme- DOVOLJENI_LETNIKI = {'drugi': 2, 'peti': 5, 'prvi': 1, 'tretji': 3, 'četrti': 4}
- class izpitni_roki.osnovno.Obdobje(ime: str, zacetek: datetime, konec: datetime)
Bases:
IDTerIme- static doloci_obdobje(datum: datetime, obdobja: List[Obdobje]) Obdobje
Najde obdobje, v katero spada dani datum.
- Parameters:
datum – neki datum
obdobja – seznam izpitnih obdobij
- Returns:
obdobje, v katerega spada datum. Če takega obdobja ni, potem vrnemo OBDOBJE_IZVEN.
- static vse_vsa() str
Oblika besede “vse” glede na spol.
- Returns:
"vse"
- class izpitni_roki.osnovno.Program(ime: str)
Bases:
IDTerIme- LEPSE_OBLIKE = {'1FiMa': 'Finančna matematika', '1Mate': 'Matematika', '1PrMa': 'Praktična matematika', '2PeMa': 'Pedagoška matematika'}
- izpitni_roki.osnovno.datum_v_niz(d)
- izpitni_roki.osnovno.najdi_vse_ics(mapa: str) list[str]
Najdi vse ics datoteke v dani mapi.
- Parameters:
mapa – pot do mape
- Returns:
seznam vseh ics datotek v mapi
- izpitni_roki.osnovno.nalozi_problematicna_imena()
- izpitni_roki.osnovno.naredi_zapisnikarja(name)
Naredi zapisnikarja oz. loggerja.
- Parameters:
name – ime zapisnikarja, po navadi kar
__file__- Returns:
zapisnikar
- izpitni_roki.osnovno.niz_v_datum(niz)
- izpitni_roki.osnovno.preveri_ics_datoteke(ics_datoteke: str | list[str]) list[str]
izpitni_roki.nalozi_ics
V tej datoteki so funkcije, ki preberejo ics datoteko in njeno
vsebino shranijo v objekt tipa izpitni_roki.osnovno.Koledar().
- izpitni_roki.nalozi_ics.doloci_leto(pot: str, oblika_datuma: str | None = None) int
- izpitni_roki.nalozi_ics.nalozi_ics(pot: str, obdobja: Dict[str, Tuple[datetime, datetime]] | None = None, oblika_summary: str | None = None, oblika_datum: str | None = None) Koledar
Naloži ics datoteko v Koledar. Pričakovana oblika vsebine datoteke je
BEGIN:VCALENDAR PRODID:-//Google Inc//Google Calendar 70.9054//EN VERSION:2.0 CALSCALE:GREGORIAN METHOD:PUBLISH X-WR-CALNAME:Finančna matematika 2021/22 X-WR-TIMEZONE:Europe/Belgrade [dogodki] END:VCALENDAR
kjer so dogodki oblike
BEGIN:VEVENT DTSTART;VALUE=DATE:20220629 DTEND;VALUE=DATE:20220630 DTSTAMP:20220209T150954Z UID:fdsfsdfsdfsd@google.com CREATED:20210325T080359Z DESCRIPTION: LAST-MODIFIED:20210913T125706Z LOCATION: morda kaj, a ni pomembno SEQUENCE:4 STATUS:CONFIRMED SUMMARY:Uvod v programiranje (1Mate\, 2PeMa\, ni smeri)\, prvi letnik\, Pris ojnik Matjaž\, Perko Martin\, Pletna Marija\, 3. rok TRANSP:TRANSPARENT END:VEVENT- Parameters:
pot – pot do ics datoteke
obdobja – slovar izpitnih obdobij (s ključi zimsko, spomladansko in jesensko) in vrednostnmi (zacetek, konec), kjer sta obe krajišči vključeni in tipa
datetime. Izpitni roki, ki so izven vseh, bodo v posebni kategoriji.oblika_summary – regularni izraz, ki naj mu zadošča polje
SUMMARYv datotekioblika_datum – pythonov format za datum (npr.
%Y%m%D).
- Returns:
Koledar, ki vsebuje vse dogodke v ics datoteki.
- izpitni_roki.nalozi_ics.naredi_izpitna_obdobja(leto: int) Dict[str, Tuple[datetime, datetime]]
Naredi osnovna izpitna obdobja, ki jih uporabimo, če niso podana ročno.
- Parameters:
leto – leto, za katerega delamo izpitna obdobja, npr. 2022
- Returns:
Vrnemo slovar, ki pravi, da je zimsko januarja in februarja, spomladansko junija in julija, ter jesensko avgusta in septembra:
{ "zimsko": (datetime(leto, 1, 1), zadnji_februar), "spomladansko": (datetime(leto, 6, 1), datetime(leto, 7, 31)), "jesensko": (datetime(leto, 8, 1), datetime(leto, 9, 30)) }
- izpitni_roki.nalozi_ics.naredi_koledar(meta_vrstice_koledarja: List[str], izpitni_roki: List[IzpitniRok]) Koledar
Iz meta-opisa koledarja prebere smer, doda še izpitne roke in ustvari nov objekt Koledar
- Parameters:
meta_vrstice_koledarja – vrstice v koledarju, ki niso del dogodka
izpitni_roki – izpitni roki, ki smo jih prebrali iz dane ics datoteke
- Returns:
koledar z izpitnimi roki za dano smer
- izpitni_roki.nalozi_ics.preberi_vrednosti(vrstice: List[str], nujni_kljuci: List[str]) Tuple[Dict[str, str], str]
- Vrstice, ki opisujejo dogodek (izpitni rok) ali pa koledar, predela tako, da odstrani
morebitne prelome vrstic in jih združi v slovar {kljuc: vrednost, …}, kjer so ključi ključne besede iz .ics formata, npr.
DTSTART;VALUE=DATEaliX-WR-TIMEZONE.
- Parameters:
vrstice – zaporedne vrstice iz ics datoteke, ki opisujejo dogodek ali koledar. Seznam ne vsebuje ne začetne vrstice (BEGIN:VCALENDAR ali BEGIN:VEVENT) ne končne vrstice (END:VCALENDAR ali END:VEVENT).
nujni_kljuci – ključi, ki jih nujno potrebujemo, da bi lahko kasneje ustvarili IzpitniRok ali Koledar
- Returns:
par (slovar, združene vrstice), kjer slovar podaja pare ključna beseda iz ics: pripadajoča vrednost (v pripadajoči vrednosti so bili odstranjeni prelomi vrstic), združene vrstice pa so dobljene kot
"\n".join(vrstice).
- izpitni_roki.nalozi_ics.sprocesiraj_dogodek(vrstice: List[str], obdobja: List[Obdobje], oblika_summary: str | None, oblika_datum: str | None) IzpitniRok
Iz vrstic dogodka ustvari izpitni rok.
Branje je bolj kot ne neposredno, le s poljem
SUMMARYje nekaj dela, saj je njegova vsebina npr.Uvod v junaštva (Smer1\, Smer2\, Smer3)\, prvi letnik\, Klepec Peter\, Krpan Martin\, Kekec Kekec\, 3. rok
(prelom za vejico smo dodali zaradi berljivosti: sledi ji presledek v naslednji vrsti).
Če oblika datumov (pri
DTSTART;VALUE=DATE) ni%Y%m%d(npr.20231225za 25. 12. 2023), jo je treba podati.- Parameters:
vrstice – surove vrstice, kot jih preberemo v ics datoteki. Opisujejo koledar ali dogodek, v njih nista prisotna začena in končna vrstica (
[BEGIN oz. END]:VEVENT). Nujno morata biti v njih prisotna ključaSUMARYinDTSTART;VALUE=DATE.obdobja – seznam izpitnih obdobij
oblika_summary –
regularni izraz, ki mu zadošča vrednost polja
SUMMARY. Vsebovati mora iste poimenovane skupine, kot jih (prednastavljeni)r"^(?P<predmet>[^(]+)\((?P<smeri>[^)]+)\)\, ?" \ r"(?P<letnik>[^ ]+) letnik\, " \ r"?(?P<izvajalci>([^\]+\, ?)+)" \ r"(?P<rok>\d+\.) rok ?$"
oblika_datum – pythonov format za datum, npr.
%Y%m%d
- Returns:
IzpitniRok, ki ga opisujejo vrstice
- Raises:
ValueError če
SUMMARYdogodka ni predpisane oblike.
izpitni_roki.preverjanje
V tej datoteki so funkcije, s katerimi preverimo usterznost izpitnih rokov.
- izpitni_roki.preverjanje.nalozi_obvezne_predmete()
- izpitni_roki.preverjanje.preveri_predmet_letnik(program: str, letnik: int, izpitni_roki: list[IzpitniRok], obdobja: tuple[tuple[str, str], tuple[str, str], tuple[str, str]], prazniki: list[str])
Preveri, ali so razpisani roki za dani letnik (danega programa) skladni s pravili.
- Parameters:
program – npr.
"1FiMa"letnik – 1, 2, 3, 4 ali 5
izpitni_roki – razpisani roki danega program-letnika
obdobja – trojica intervalov, ki podaja zimsko, spomladansko in jesensko izpitno obdobje. Vsak interval je podan s paroma datumov, npr.
("24. 1. 2024", "16. 2. 2024")prazniki – seznam datumov (kot nizov, npr.
25. 6. 2023), na katere naj ne bo izpitov
- Returns:
ne vrne ničesar, le izpiše opozorila, če so ta potrebna, sicer pa obvesti, da je vse v redu.
- izpitni_roki.preverjanje.preveri_vse(koledarji: list[Koledar], obdobja: tuple[tuple[str, str], tuple[str, str], tuple[str, str]], prazniki: list[str])
Preveri vse izpitne roke, tako da razbije dane koledarje na program-letnike in pokliče
razbij_po_program_letnikih()na vseh.
- izpitni_roki.preverjanje.razbij_po_program_letnikih(izpitni_roki: list[IzpitniRok]) dict[tuple[str, int], list[IzpitniRok]]
Razbije dane roke glede na program-letnik.
- Parameters:
izpitni_roki – izpitni roki vseh letnikov in programov
- Returns:
slovar koledarjev
{ime1: roki1, ...}, katerega ključi so imena program-letnikov (npr.1FiMa - 1. letnik), vrednosti pa seznami izpitnih rokov, ki vsebujejo le izpite za dani program-letnik.
izpitni_roki.naredi_html
V tej datoteki so funkcije, ki ustvarijo html stran oz. njene kose (npr. en spustni meni ali pa eno tabelo).
- izpitni_roki.naredi_html.najdi_vsa_obdobja(koledarji: List[Koledar]) List[IDTerIme]
Najdemo vsa obdobja, ki se pojavijo v izpiznih rokih v koledarju.
- Parameters:
koledarji – seznam obdobij
- Returns:
(urejena) obdobja (brez ponovitev)
- izpitni_roki.naredi_html.najdi_vse(koledarji: List[Koledar], izvleckar: Callable[[IzpitniRok], List[IDTerIme]]) List[IDTerIme]
Najde vse prisotne vrednosti danega polja izpitnega roka.
- Parameters:
koledarji – seznam objektov Koledar
izvleckar – funkcija, ki iz objekta IzpitniRok izvčleče vrednost željenega polja, in ga vrne kot objekt IDTerIme
- Returns:
urejen seznam prisotnih vrednosti (brez ponovitev), ki smo jih izvlekli. Seznam je urejen glede na urejenost podrazreda IDTerIme.
- izpitni_roki.naredi_html.najdi_vse_izvajalce(koledarji: List[Koledar]) List[IDTerIme]
Najdemo vse izvajalce, ki se pojavijo v izpiznih rokih v koledarju.
- Parameters:
koledarji – seznam izvajalcev
- Returns:
(urejeni) izvajalci (brez ponovitev)
- izpitni_roki.naredi_html.najdi_vse_letnike(koledarji: List[Koledar]) List[IDTerIme]
Najdemo vse letnike, ki se pojavijo v izpiznih rokih v koledarju.
- Parameters:
koledarji – seznam koledarjev
- Returns:
(urejeni) letniki (brez ponovitev)
- izpitni_roki.naredi_html.najdi_vse_predmete(koledarji: List[Koledar]) List[IDTerIme]
Najdemo vse predmete, ki se pojavijo v izpiznih rokih v koledarju.
- Parameters:
koledarji – seznam predmetov
- Returns:
(urejeni) predmeti (brez ponovitev)
- izpitni_roki.naredi_html.najdi_vse_programe(koledarji: List[Koledar]) List[IDTerIme]
Najdemo vse programe, ki se pojavijo v izpiznih rokih v koledarju.
- Parameters:
koledarji – seznam koledarjev
- Returns:
(urejeni) programi (brez ponovitev)
- izpitni_roki.naredi_html.najdi_vse_roke(koledarji: List[Koledar]) List[IDTerIme]
Najdemo vse roke (1., 2., …), ki se pojavijo v izpiznih rokih v koledarju.
- Parameters:
koledarji – seznam rokov
- Returns:
(urejeni) roki (brez ponovitev)
- izpitni_roki.naredi_html.nalozi_predmete_za_zduzevanje() Dict[str, List[str]]
Naloži datoteko, ki opisuje, katere predmete je treba združiti. Izkaže se, da ni važno, ali je predmet voden ločeno ali ne, mi samo združimo :)
- Returns:
slovar, ki ima za ključe imena predmetov, in za vrednosti imena programov
- izpitni_roki.naredi_html.naredi_html(poti_do_koledarjev: List[str], naslov: str = 'Naslov strani', opis_strani: str = 'Opis strani', ime_izhodne: str = 'izpitni_roki', obdobja: Dict[str, Tuple[datetime, datetime]] | None = None, oblika_summary: str | None = None, oblika_datum: str | None = None)
Naredi celotno spletno stran.
- Parameters:
poti_do_koledarjev – seznam poti do .ics datotek, ki vsebujejo izpitne roke
ime_izhodne – ime izhodne datoteke, npr.
izpitni_roki(in neizpitni_roki.html)naslov –
naslov spletne strani, npr.
"Izpitni roki na Oddelku za matematiko FMF v študijskem letu 2022/23"
opis_strani –
Kratek opis strani (npr. katere izpitne roke vsebuje), npr.
"Spodaj so prikazani izpitni roki na programih Finančna matematika (1FiMa), Matematika (1Mate) in Praktična matematika (1PrMa) in prvih treh letnikih programa Pedagoška matematika (2PeMa) na Oddelku za matematiko FMF v študijskem letu 2022/23, ki zadoščajo izbranim kriterijem."
obdobja – slovar, ki podaja imena in intervale izpitnih obdobij, npr.
{"zimsko izpitno obdobje": (datetime(2022, 1, 15), datetime(2022, 2, 15), ...}. Izpiti, ki ne bodo padli v nobeno od naštetih obdobij, bodo imeli kategorijoizven izpitnega obdobja.oblika_summary – regularni izraz, ki mu zadošča polje
SUMMARYv ics datoteki.oblika_datum – format datuma (npr.
%Y%m%D), ki mu zadošča poljeDTSTART;VALUE=DATE.
- Returns:
Ne vrne ničesar, se pa str(predloga za stran) pojavi v izhodni mapi
out.
- izpitni_roki.naredi_html.naredi_spustni_meni(ime_menija: str, html_razred: str, moznosti: List[IDTerIme]) str
Naredi enonivojski spustni meni.
- Parameters:
ime_menija – napis na gumbu
html_razred – razred, ki ga dodatmo v
classatribut vseh možnostimoznosti – Urejen seznam moznosti.
- Returns:
str(html predloga enonivojski spustni meni)
- izpitni_roki.naredi_html.naredi_spustni_meni_po_crkah(ime_menija: str, html_razred: str, moznosti: List[IDTerIme]) str
Naredi dvonivojski spustni meni.
- Parameters:
ime_menija – napis na gumbu
html_razred – razred, ki ga dodatmo v
classatribut vseh možnostimoznosti – Urejen seznam moznosti.
- Returns:
str(html predloga za dvonivojski spustni meni)
- izpitni_roki.naredi_html.naredi_tabelo(koledarji: List[Koledar]) str
Html koda za tabelo vseh izpitnih rokov
- Parameters:
koledarji – seznam objektov Koledar
- Returns:
str(html predloga za tabelo)
- izpitni_roki.naredi_html.zdruzi_roke(izpitni_roki: List[IzpitniRok]) List[IzpitniRok]
Združi izpitne roke pri predmetih, ki se pojavijo v več programih.
- Parameters:
izpitni_roki – seznam ločenih rokov
- Returns:
seznam združenih rokov
izpitni_roki.glasbene_zelje
V tej datoteki so razne funkcije, ki niso neposredno uporabljene za gradnjo spletnih strani in služijo zelo ozkemu namenu, npr. obveščanju tajništva FRI, kdaj se piše Topologijo, zato so namensko opisane le izbrane funkcije.
- izpitni_roki.glasbene_zelje.prikazi_isrm_roke(poti_do_ics: str | list[str])
Prikaže roke za predmete, ki jih ponujamo IŠRM. Izda opozorilo, če za kakšnega od predmetov ni bil najden noben rok.
- Parameters:
poti_do_ics – poti do ics datotek kot a) niz, ki predstavlja ime mape, npr.
letosnji_data(najdemo vse ics datoteke v dani mapi), ali b) seznam ics datotek, npr.["letosnji_data/test1.ics", "letosnji_data/test2.ics"]- Returns:
ne vrne ničesar, samo izpiše ustrezne vrstice
- izpitni_roki.glasbene_zelje.ustrezni_izpitni_roki(koledarji: List[Koledar], pogoj: Callable[[IzpitniRok], bool]) List[IzpitniRok]
Vrne roke v koledarjih, ki ustrezajo filtrirnemu pogoju.
- Parameters:
koledarji – seznam koledarjev
pogoj – funkcija, ki oceni primernost roka
- Returns:
urejen seznam ustreznih rokov