Zapisovanje ovir
Obvezna naloga
Mednarodni standard ISO-1234 za zapis pozicij ovir na kolesarskih poteh zapiše ovire takole:
004: 5-6 9-11
005: 9-11 19-20 30-34
013: 5-8 9-11 17-19 22-25 90-100
- Vsaka vrstica datoteke se nanaša na eno "vrstico" kolesarske poti.
- Prva številka v vrstici je koordinata y, zapisana na 3 mesta, z vodilnimi ničlami. Koordinata 42 je torej zapisana kot
042. - Sledi dvopičje.
- Sledijo pari; začetni in končni x sta ločena z
-. Zapisana sta na 4 mesta, pri čemer je začetna koordinata poravnana desno, končna pa levo.
Napiši naslednje funkcije:
zapis_meje(x0, x1)prejme koordinato levega in desnega konca ovire ter vrne niz s tema koordinatama, zapisanama na 4 mesta, pri čemer je prva poravnana desno, druga levo, vmes je-.Klic
zapis_meje(94, 152) vrne" 94-152 ". Ne spreglej presledka na koncu: če testi napišejo, da94-152 != 94-152, je nekaj narobe s presledki.zapis_vrstice(y, xs)prejme številko vrstice in seznam parov začetkov in koncev ovir v njej. Vrne niz z vrstico v gornji obliki. Kliczapis_vrstice(5, [(9, 11), (19, 20), (30, 34)])vrne"005: 9-11 19-20 30-34 "zapisi_ovire(ime_datoteke, ovire)prejme ovire v obliki slovarja: ključi so številke vrstic, pripadajoče vrednosti pa seznami parov začetkov in koncev ovir. Prvi argument funkcije pa je ime datoteke: vanjo mora zapisati ovire skladno standardom.Klic
zapisi_ovire("ovire.txt", {4: [(5, 6), (9, 11)], 5: [(9, 11), (19, 20), (30, 34)], 13: [(5, 8), (9, 11), (17, 19), (22, 25), (90, 100)]}zapiše v ovire.txt ovire v zgoraj zapisani obliki.
Testi bodo funkciji vsakič podali drugačno ime datoteke (konkretno: trenutni čas). Če se test izvede uspešno, bodo datoteko pobrisali, sicer jo bodo pustili (in se bodo začele nabirati), tako da lahko vidite, kaj je funkcija (napačno) zapisala vanjo.
Dodatna naloga
Oddelek za gospodarstvo in motoriziran promet je ponosen na svoje inovacije. (Temu na primer, da so kolesarjem na Slovenski cesti omogočili voziti slalom med avtobusi, z vso resnostjo pravijo "inovacija v svetovnem merilu". Kar dejansko je.)
Tokrat so največji prometni strokovnjaki na svetu, torej prometni strokovnjaki MOL, staknili glave in sestavili nov standard za zapis ovir, standard MOL-666-B. Ta zapiše gornje ovire takole:
4 2
5
6
9
11
5 3
9
11
19
20
30
34
13 5
5
8
9
11
17
19
22
25
90
100
V prvi vrstici je številka vrstice z ovirami (4) in število ovir v tej vrstici (2). Naslednje štiri vrstice datoteke vsebujejo začetke in konce teh ovir (5 in 6 ter 9 in 11). Nato sledi nova številka vrstice z ovirami (13) in število ovir v njej (5). Sledi 10 vrstic datoteke z začetki in konci teh ovir...
Kot navaja MOL, je novi standard namenjen še večjemu spodbujanju kolesarjenja in trajnostne mobilnosti, hkrati pa tudi hitrejšemu zelenemu prehodu v brezogljično družbo.
Napiši funkcijo preberi_ovire(ime_datoteke), ki prebere ovire iz takšne datoteke v slovar.
Testno datoteko bodo sestavili testi ob prvem zagonu. Njeno ime bo "ovire.txt", vendar naj bo funkcija napisana tako, da zna prebrati datoteko s poljubnim podanim imenom.
Testi
- 1 maj 2023, 11:22