메인 콘텐츠로 건너뛰기
Učilnica FRI 23/24
  • 홈
  • 더 보기
닫기
검색 입력 전환
한국어 ‎(ko)‎
English ‎(en)‎ Slovenščina ‎(sl)‎ Македонски ‎(mk)‎ Русский ‎(ru)‎ 한국어 ‎(ko)‎
손님 계정으로 접속
로그인
홈
Course Activities
과제물들 포럼모음 학습자료
Recent Courses
You are not enrolled in any courses
  1. p1
  2. Zemljevid ovir

Zemljevid ovir

완료 조건
Due: 월요일, 6 11월 2023, 11:00 AM

Naloga vsebuje teste. Naloga je rešena samo, če prestane vse teste. Poglej navodila za poganjanje testov.

MOL je poslal zemljevid ovir na kolesarski poti. Zemljevid je shranjen kot seznam nizov, ki predstavljajo "vrstice": # predstavlja oviro, . pa prosto pot. Tipičen primer korektno zašikanirane kolesarske steze je

zemljevid = [
    "......",
    "..##..",
    ".##.#.",
    "...###",
    "###.##",
]

Vsi nizi so enako dolgi.

Napiši naslednje funkcije. (Tokrat ni dodatnega dela, vse je obvezno. Navsezadnje imate dva tedna. :)

  1. dolzina_ovir(vrstica) prejme eno vrstico, na primer ".##.####...##." in vrne skupno dolžino ovir, torej, število znakov # (v tem primeru 8).
  2. stevilo_ovir(vrstica) prejme vrstico in vrne število ovir v vrstici. Za gornji primer mora vrniti 3, saj imamo najprej eno dvojno šikano, nato eno četverno in potem spet eno dvojno - skupaj tri.
  3. najsirsa_ovira(vrstica) vrne dolžino najdaljše ovire. V gornjem primeru je to 4.
  4. pretvori_vrstico(vrstica) vrne seznam parov (x0, x1), ki predstavljajo začetke in konce ovir. Za gornji primer vrne [(2, 3), (5, 8), (12, 13)]. Pazi, stolpci so oštevilčeni od 1, ne 0.
  5. pretvori_zemljevid(vrstice) prejme celoten zemljevid, kot ga vidimo v uvodnem delu naloge, in vrne seznam trojk (x0, x1, y), ki predstavljajo ovire. Za gornji zemljevid mora vrniti [(3, 4, 2), (2, 3, 3), (5, 5, 3), (4, 6, 4), (1, 3, 5), (5, 6, 5)]. Seznam naj bo urejen po vrsticah in znotraj tega po stolpcih (tako kot v primeru). Pazi, tudi vrstice so oštevilčene od 1, ne 0.
  6. izboljsave(prej, potem) prejme dva zemljevida - en je starejši, drugi novejši. Funkcija mora vrniti seznam novo postavljenih ovir; tudi ta mora biti urejen po vrsticah in znotraj tega po stolpcih. Mirno smeš predpostaviti, da MOL ne odstranjuje postavljenih ovir, temveč jih zgolj dodaja. Prav tako nobena ovira ni "razširjena"; nove ovire niso postavljene neposredno levo ali desno od obstoječih. Predpostaviti smeš tudi, da nova kolesarska steza ni širša. (No, tudi ožja ne; enake oblike je.)
  7. huligani(prej, potem); zgodi se, da pridejo huligani in kradejo ovire ter s tem ogrožajo varnost kolesarjev. Funkcija huligani naj zato vrne dva seznama: seznam vseh novih in seznam vseh odstranjenih ovir. Tu se lahko zgodi, da se nova ovira delno prekriva z neko prejšnjo.

Testi

  • testi.py testi.py
    21 10월 2023, 5:58 PM
◄ Tour de Slovenie
Testi ►
손님 계정으로 접속 (로그인)
Get the mobile app Obvestilo o avtorskih pravicah
Moodle 제공