Preskoči na glavno vsebino
Učilnica FRI 23/24
  • Domov
  • Več
Zapri
Preklopi iskalni vnos
Slovenščina ‎(sl)‎
English ‎(en)‎ Slovenščina ‎(sl)‎ Македонски ‎(mk)‎ Русский ‎(ru)‎ 한국어 ‎(ko)‎
Trenutno uporabljate gostujoči dostop
Prijavite se
Domov
Course Activities
Forumi Naloge Viri
Nedavno dostopani predmeti
You are not enrolled in any courses
  1. p1
  2. Analiza infrastrukture

Analiza infrastrukture

Zahteve zaključka
Rok za oddajo: ponedeljek, 27. november 2023, 11.15

Tokratna naloga je kratka: če ne štejemo glav funkcij (def ...), morate napisati morate samo 10 vrstic, pa še eno za dodatno nalogo, če želite. In niti vrstice več.

Nekaj pravil in dovoljenih predpostavk v zvezi s to domačo nalogo.

  • Tokrat morajo vse funkcije vsebovati le return. Za nekatere je potrebno uporabiti generatorske izraze oz. izpeljane sezname, množice, ali slovarje, nekatere pa je možno napisati še preprosteje.
  • Pisanje dodatnih funkcij je tokrat (izjemoma) prepovedano. Izdelek sme vsebovati le zahtevane funkcije. Dovoljena pa je uporaba dodatnih modulov, vendar le teh, ki jih dobimo s Pythonom, ne dodanih knjižnic,
  • V tokratni nalogi je zemljevid slovar, ki že vsebuje povezave v obe smeri (razen v primeru, da je kolesarska dejansko enosmerna), ključi pa so že množice. Z drugimi besedami: klic obrnjen_zemljevid ni več potreben.
  • V vseh funkcijah, razen nove_povezave in izvedljiva, smeš predpostaviti, da vse povezave na poti obstajajo.
  • Vsaka podana pot vsebuje vsaj eno povezavo.

Obvezna naloga

Napiši naslednje funkcije:

  1. nove_povezave(pot, zemljevid) vrne množico povezav, ki so na podani poti, vendar na zemljevidu ne obstajajo.

    Klic nove_povezave("ABVCDFE") vrne {(V, C), (C, D), (F, E)}, saj te tri povezave ne obstajajo.

    (MOL potrebuje takšno funkcijo, ker je 1. 4. 2023 namreč objavil novico o načrtovani gradnji novih kolesarskih povezav, pri kateri so se - po dolgi in napeti debati - odločili ravnati po potrebah kolesarjev.)

  2. obiskane_tocke(pot) vrne množico vseh točk, ki se pojavijo na poti.

    Klic obiskane_tocke("ABVURURC") vrne {A, B, C, R, U, V}. )

  3. popravljena_pot(pot) popravi napačno zapisano pot. Nekateri pot, sestavljeno iz, recimo odsekov A-B, B-C, C-R, R-I, I-E, namreč opišejo z "ABBCCRRIIE". Funkcijo mora to spraviti v običajni format.

    Klic popravi_pot("ABBCCRRIIE") vrne "ABCRIE".

    (Nekateri = Angelca. Itak.)

  4. povezave_z_vescino(pot, zemljevid, vescina) vrne seznam vseh povezav na podani poti, ki zahtevajo podano veščino. Vrstni red elementov mora biti enak vrstnemu redu na poti. Če se ista povezava pojavi večkrat na poti, mora biti tudi večkrat v seznamu.

    Klic povezave_z_vescino("RUVRUTS", zemljevid, "pešci") vrne [('R', 'U'), ('V', 'R'), ('R', 'U')].

    (Ker želi MOL pripraviti tematske poti za turiste.)

  5. dolgocasna_pot(pot, zemljevid) vrne True, če pot vsebuje vsaj eno povezava, ki ne zahteva nobene veščine (in False sicer).

    Klic dolgocasna_pot("ABVUR") vrne True (zaradi povezave B-V ("brez veze")), klic dolgocasna_pot("AVUR") pa vrne False.

    (S funkcijo bo MOL lažje identificiral mesta, kjer je potrebno zvišati robnike, pustiti, da kolesarsko zaraste trava ali kaj podobnega. Kolesar, ki zeha, je zaspan in nepozoren, kar ogroža njegova varnost.)

  6. dobra_pot(pot, zemljevid) vrne True, če zahtevajo vse povezave na poti vsaj dve veščini.

    Klic dobra_pot("ABCR") vrne True, klic dobra_pot("ABCRDF") pa False (ker zahtega R-D samo eno veščino.)

    (MOL potrebuje to in naslednjo funkcijo, da najde primerne poti za organizacijo dogodka "Kolesarimo po Ljubljani".)

  7. zahtevnost_poti(pot, zemljevid) vrne zahtevnost poti. Ta je enaka največjemu številu veščin, ki jih zahteva nek odsek na poti.

    Klic zahtevnost_poti("ABCRU") vrne 3, ker povezava C-R zahteva tri različne veščine - kar je največ, kar najdemo na tej pestri poti.

  8. izvedljiva(pot, zemljevid, zivljenj) vrne True, če je pot izvedljiva za kolesarja s podanim številom življenj in False, če ni. Kolesar izgubi življenje, če vozi po povezavi, ki je ni na zemljevidu. Če kolesar konča pot z 0 življenji, je mrtev, torej pot zanj ni izvedljiva.

    Klic izvedljiva("AVUSPRDEI", zemljevid, 3) vrne 3, ker kolesar izgubi vsa tri življenja na U-S, P-R in D-E.

    (MOL potrebuje funkcijo za oblikovanje strokovnega priporočila o potrebnem številu življenj, ki naj jih ima kolesar, preden gre na pot v Ljubljani.)

  9. enosmerne(zemljevid) vrne množico povezav, ki so samo enosmerne.

    V običajnem zemljevidu takih povezav ni, zato klic enosmerne(zemljevid) vrne prazno množico. Klic

      enosmerne({(A, B): {"robnik", "bolt"},
                 (B, A): {"robnik", "bolt"},
                 (A, C): {"bolt", "rodeo", "pešci"},
                 (C, D): set(),
                 (D, C): set(),
                 (V, B): {"avtocesta"}
     })
    

    pa vrne {(A, C), (V, B)}, ker gresta povezavi A-C in V-B le v eno smer.

  10. dvosmerne(zemljevid) vrne nov slovar z zemljevidom, ki vsebuje le povezave, ki so dvosmerne.

    Klic dvosmerne(zemljevid) vrne enak zemljevid, kot ga je prejel. Klic dvosmerne z gornjim zmeljevidom pa vrne

    {(A, B): {"robnik", "bolt"},
     (B, A): {"robnik", "bolt"},
     (C, D): set(),
     (D, C): set()}
    

Dodatna naloga

Samo ena funkcija, ki zahteva malo več (če nismo spretni, pa je malo bolj zapletena).

Napiši funkcijo najzahtevnejsi_odsek(pot, zemljevid), ki vrne tisti odsek na poti, ki zahteva največ veščin. Če je takih odsekov več, vrne tistega, ki se na poti pojavi prej.

Testi

  • testi.py testi.py
    21. november 2023, 17:16
◄ Testi
Testi ►
Trenutno uporabljate gostujoči dostop (Prijavite se)
Pridobi mobilno aplikacijo Obvestilo o avtorskih pravicah
Stran poganja Moodle