Zemljevid ovir
Oddelek za gospodarske dejavnosti in (motorni) promet Mestne občine Ljubljana (MOL) slovi po srce parajoči skrbi za varnost kolesarjev. V imenu te skrbi jim povsod, kjer je to v interesu kolesarjev, odvzame prednost, jim postavlja različne ovire, viša robnike in ukinja kolesarske steze, kjer niso potrebne (predvsem, če je tam slučajno potrebno povečati število parkirišč za avtomobile). Vašemu profesorju se vsak dan orosi oko od ganjene hvaležnosti MOLu ob pogledu na mesto na Večni poti, kjer so - kot je povedal MOL - kolesarjem odvzeli prednost, da jih ne bi povozil avto ali kombi, ki morda ne bi vedel, da imajo tu prednost kolesarji. (Več o tem si preberite na strani Runda.)
Ogrevalna naloga
Recimo, da so ovire postavljene, kot kaže slika. V Pythonu bi lahko njihove pozicije opisali s seznamom trojk (terk) (x1, x2, y), kjer sta x1 in x2 (x1 <= x2) številki stolpca, kjer se ovira začne in konča (ovira vključuje tudi x2). Ovire na sliki bi tako opisali s seznamom
ovire = [(1, 3, 6), (2, 4, 3), (4, 6, 7),
(3, 4, 9), (6, 9, 5), (9, 10, 2), (9, 10, 8)]
Vrstni red elementov seznama je nepomemben.
Napiši naslednje funkcije
stevilo_ovir(ovire)prejme ovire v obliki seznama trojk (x0, x1, y) in vrne število ovir.dolzina_ovir(ovire)vrne skupno dolžino vseh ovir.sirina(ovire)vrne širino kolesarke steze, se pravi najbolj desno koordinato v seznamu ovir.
Obvezna naloga
Napiši funkcije
globina(ovire, x)prejme seznam ovir (v obliki trojk) in vrne vrstico, v kateri bi kolesar, ki se vozi po stolpcuxod zgoraj navzdol, naletel na oviro. Če v stolpcu ni ovir, naj vrneNone.naj_stolpec(ovire)vrne stolpec, v katerem kolesar pride najdlje in vrstico, do katere pride. Možno je tudi, da v kakem stolpcu ni ovire; v tem primeru vrne koordinato tega stolpca inNone.senca(ovire)vrne seznam, katerega elementa soFalseoz.Trueglede na to, ali stolpec vsebuje kako oviro ali ne. Če je širina poti5in sta drugi in zadnji stolpec brez ovir (to ni primer s slike), vrne[False, True, False, False, True].
Dodatna naloga
MOL je poslal zemljevid ovir na kolesarski poti. Zemljevid je shranjen kot seznam nizov, ki predstavljajo "vrstice": # predstavlja oviro, . pa prosto pot.
Zemljevid je lahko, recimo, takšen
["..........",
"........##",
".###......",
"..........",
".....####.",
"###.......",
"...###....",
"........##",
"..##......",
".........."]
Napiši funkciji
pretvori_vrstico(vrstica)prejme vrstico v obliki niza, sestavljenega iz znakov # in . ter vrne seznam parov (x0, x1), ki predstavljajo začetne in končne stolpce ovir v tej vrstici.Klic
pretvori_vrstico(".##..####...##")vrne[(2, 3), (6, 9), (13, 14)]. Ne spreglej, da koordinate niso opisane po "Pythonovsko": prvi stolpec ima indeks 1 in obe meji sta vključeni ((6, 9)pokriva tudi vrstico 9, torej vsebuje 4#).pretvori_zemljevid(zemljevid)dobi zemljevid v obliki seznama nizov in vrne seznam ovir, s kakršnim smo delali v ogrevalni in obvezni nalogi.
Testi
- 14 februar 2023, 14:26