Lokacije ovir
MOL je poslal zemljevid ovir na kolesarski poti. Zemljevid je shranjen kot seznam nizov, ki predstavljajo "vrstice": #
predstavlja oviro, .
pa prosto pot.
Ker smo prejšnji teden napisali program, ki sprejme opis ovir kot seznam trojk (x0, x1, y)
, bi radi pretvorili MOLov zemljevid v takšno obliko.
Obvezna naloga
Napiši program, ki se začne z opisom ovir v eni vrstici, na primer
ovire = ".##..####...##"
Program mora izpisati seznam parov, ki predstavljajo začetke in konce ovir. Za gornjo postavitev je to [(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 #
).
Program obvezno preskusi na nizih ".##..####...##"
in ##..#...#
(ki se pretvori v [(1, 2), (5, 5), (9, 9)]
).
Dodatna naloga
Napiši program, ki prejme celotni zemljevid in vrne seznam ovir, kot smo ga vajeni iz prejšnje naloge. Če zemljevid definiramo z
zemljevid = [
"......",
"..##..",
".##.#.",
"...###",
"###.##",
]
mora izpisati [(3, 4, 2), (2, 3, 3), (5, 5, 3), (4, 6, 4), (1, 3, 5), (5, 6, 5)]
.
Pazi, tudi vrstice so oštevilčene od 1.