Lokacije ovir

Rok za oddajo: torek, 8. november 2022, 13.45

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.