ITI0140:Ülesanne 4

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti

Miinikits Miina

Tahaksite oma aiamaale kartulid panna, kuid on probleem. Nimelt, naabrihuligaan Mati on teie aia täitnud miinidega! Õnneks teate, et teie kits Miina on väga osav miiniotsija. Niisis, hiilite Miinaga aiamaa keskele, rullite ta köie ümber posti, ning lasete kitsel tegutseda. Miina rullib end lahti, kõnnib spiraalselt mööda aiamaad väljapoole ja leiab miinid üles. Nüüd kus teate, kus on miinid, tahate teada, kus on jalutada kõige ohtlikum. Selle jaoks koosta programm, millele andes ette miinide asukohad ja aiamaa suuruse, koostab polaarkaardi, kus on miinide asukohad ja mitu miini iga sektori kõrval on.

<source lang="python"> def create_mine_map(mines, layers):

   return polar_map

</source> Miinid antakse teile 2-korteežide järjendina, nt

[(0, 1), (2, 3)]

kus esimene number tähistab kihti (kaugust keskpunktist) ja teine number sektori veerandit (0 = esimene veerand, 1 = teine veerand jne).

Layers tähendab, mitu kihti te peaksite tagastama. Ühe asukoha peal saab olla ainult üks miin. Kuigi teile võidakse anda mitu sama asukohaga miini, kohelge neid kui üks miin. Polaarkaart tuleb tagastada järjendite järjendina (maatriksina), kus iga sisemine järjend (kiht) oleks 4 pikk ja hoiaks endas veerandis asuvaid tähiseid. Tähised on suur X täht (sõne), kui asukohas on miin ning number mitu miini sektori kõrval on, kui seal ei ole miini (kõrval tähendab, et ükskõik mis nurk või serv puutub nurka või serva). Polaarkaardi järjestus peaks olema selline, et esimene kiht oleks esimene element, jne. Näiteks, kui teile antaks miinideks järgnev:

[(0, 0), (2, 2)]

Ja layeriteks järgnev:

4

Ootame tagastuseks järgnevat maatriksit:

[['X', 1, 1, 1], [1, 2, 1, 2], [0, 1, 'X', 1], [0, 1, 1, 1]]

Visuaalselt tähistaks see järgnevat olukorda:

|1______|______0|
| |1____|____0| |
| | |2__|__1| | |
|_|_|_|1|X|_|_|_|
| | | |1|1| | | |
| | |1__|__2| | |
| |X____|____1| |
|1______|______1|

Selleks et visuaalset olukorda ise ka jälgida, anname teile kaasa mooduli print_map.py Kui tahate printida oma polaarkaarti samamoodi nagu siin, kirjutage enda faili tippu

from print_map import print_map

Ja siis saate kasutada oma koodis funktsiooni print_map, millele annate argumendiks oma polaarkaardi.