diff --git a/program.py b/program.py index c75758c..abe14b8 100644 --- a/program.py +++ b/program.py @@ -1,7 +1,10 @@ +def razdalja_povezava(x0, y0, x1, y1): + return abs(x1-x0) + abs(y1-y0) + def pravilna(povezava): x0, y0, x1, y1 = povezava # preveri dolzino - prekratka = (abs(x1-x0) + abs(y1-y0)) > 0 + prekratka = razdalja_povezava(x0, y0, x1, y1) > 0 # preveri, da je vodoravna ali navpicna in ne diagonalna diagonalna = (x0 == x1) or (y0 == y1) @@ -72,28 +75,31 @@ def secisce(povezava1, povezava2): return None def urejeni_povezavi(povezava1, povezava2): - x0_1, y0_1, x1_1, y1_1 = urejena(povezava1) - x0_2, y0_2, x1_2, y1_2 = urejena(povezava2) + pov1 = urejena(povezava1) + pov2 = urejena(povezava2) + + x0_1, y0_1, x1_1, y1_1 = pov1 + x0_2, y0_2, x1_2, y1_2 = pov2 if x0_1 < x0_2: - return povezava1, povezava2 + return pov1, pov2 elif x0_2 < x0_1: - return povezava2, povezava1 + return pov2, pov1 if y0_1 < y0_2: - return povezava1, povezava2 + return pov1, pov2 elif y0_2 < y0_1: - return povezava2, povezava1 + return pov2, pov1 if x1_1 < x1_2: - return povezava1, povezava2 + return pov1, pov2 elif x1_2 < x1_1: - return povezava2, povezava1 + return pov2, pov1 if y1_1 < y1_2: - return povezava1, povezava2 + return pov1, pov2 elif y1_2 < y1_1: - return povezava2, povezava1 + return pov2, pov1 # sigurno ne bosta dve identični povezavi prileteli sem? :D if x0_1 == x0_2 and y0_1 == y0_2: return None @@ -129,13 +135,9 @@ def krizisca(povezave): return krizisce def mozna_pot(pot, mreza): - povezave_obstajajo = True - for povezava in pot: # dobimo urejeno povezavo pov = urejena(povezava) - - obstaja_pot = False # preverimo če obstaja povezava v mreži @@ -149,68 +151,38 @@ def mozna_pot(pot, mreza): return False # to be continued, preveriti moramo še če se vse povezave stikajo skupaj + for i in range(0, len(pot)): + # preverjamo trenutno povezavo z naslednjo, zato + if i + 1 == len(pot): break + if secisce(pot[i], pot[i+1]) is None: return False + return True + +def razdalja(pot, mreza): + skupna_razdalja = 0 + + povezava1, povezava2 = urejeni_povezavi(pot[0], pot[1]) + sec = mreza[(povezava1, povezava2)] # ker imamo zagotovilo v navodilih, da ima pot vsaj dve povezavi + print(povezava1, povezava2) + + for i in range(2, len(pot)): + # ker gledamo i za 1 vnaprej (torej tudi naslednjo pot) + if i + 1 == len(pot): break + + x0, y0 = sec + + povezava1, povezava2 = urejeni_povezavi(pot[i], pot[i+1]) + trenutno_sec = mreza[(povezava1, povezava2)] + x1, y1 = trenutno_sec + + skupna_razdalja += razdalja_povezava(x0, y0, x1, y1) + + sec = trenutno_sec + + return skupna_razdalja def main(): - povezave = [ - (11, 10, 13, 10), - - (2, 12, 8, 12), - (6, 11, 6, 13), - - (0, 16, 10, 16), - (3, 18, 3, 13), - (7, 14, 3, 14), - (9, 17, 9, 14), - ] - - pov = [ - (11, 10, 13, 10), - - (2, 12, 8, 12), - (6, 11, 6, 13), - - (0, 16, 10, 16), - (3, 18, 3, 13), - (7, 14, 3, 14), - (9, 17, 9, 14), - (13, 15, 8, 15), - (12, 14, 12, 17), - (13, 16, 21, 16), - (14, 18, 14, 15), - (13, 15, 13, 16), - (16, 16, 16, 10), - (16, 10, 21, 10), - (14, 18, 10, 18), - (11, 13, 11, 20), - (15, 13, 22, 13), - (17, 15, 17, 17), - (18, 17, 18, 14), - (19, 19, 22, 19), - (20, 15, 20, 17), - (21, 10, 21, 19), - ] - - mreza = krizisca(pov) - - print("Mreža:\n") - for i, j in mreza.items(): - print(f"{i}: {j}") - - print("\n") - - klic = mozna_pot( - [(14, 18, 10, 18), - (14, 18, 14, 15), - (13, 16, 21, 16), - (13, 16, 13, 15), - (8, 15, 13, 15), - (9, 14, 9, 17), - (10, 16, 0, 16), - (9, 14, 9, 17), - (8, 15, 13, 15), - (13, 16, 13, 15)], mreza) - #print(klic) + print() main() \ No newline at end of file