diff --git a/.idea/KolesarjenjePoManhattnu.iml b/.idea/KolesarjenjePoManhattnu.iml index aa8b567..50b978c 100644 --- a/.idea/KolesarjenjePoManhattnu.iml +++ b/.idea/KolesarjenjePoManhattnu.iml @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 53138f2..8902a41 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,5 +3,5 @@ - + \ No newline at end of file diff --git a/program.py b/program.py index 9041424..c75758c 100644 --- a/program.py +++ b/program.py @@ -39,8 +39,6 @@ def povezave_tocke(x, y, povezave): def generiraj_tuples_povezava(povezava): pov = [] - z0 = None - z1 = None x0, y0, x1, y1 = povezava @@ -73,6 +71,87 @@ 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) + + if x0_1 < x0_2: + return povezava1, povezava2 + elif x0_2 < x0_1: + return povezava2, povezava1 + + if y0_1 < y0_2: + return povezava1, povezava2 + elif y0_2 < y0_1: + return povezava2, povezava1 + + if x1_1 < x1_2: + return povezava1, povezava2 + elif x1_2 < x1_1: + return povezava2, povezava1 + + if y1_1 < y1_2: + return povezava1, povezava2 + elif y1_2 < y1_1: + return povezava2, povezava1 + + # sigurno ne bosta dve identični povezavi prileteli sem? :D + if x0_1 == x0_2 and y0_1 == y0_2: return None + +def krizisca(povezave): + krizisce = {} + + for povezava1 in povezave: + povezava1 = urejena(povezava1) + + for povezava2 in povezave: + povezava2 = urejena(povezava2) + + # nočemo primerjati križišče s samim sabo + if povezava1 == povezava2: + continue + + # sortiranje povezav + pov1, pov2 = urejeni_povezavi(povezava1, povezava2) + + # preverimo če trenutni povezavi že obstajata v slovarju + if (pov1, pov2) in krizisce: + continue + + # preverimo če najdemo sečišče + sec = secisce(pov1, pov2) + + # če ga najdemo dodamo vnos v slovar + if sec is not None: + # drugi imeni spr samo zaradi manjša zmede, ker se lahko zamenjata + krizisce[(pov1, pov2)] = sec + + 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 + for x,y in mreza.keys(): + if pov == x or pov == y: + obstaja_pot = True + break + + # če ne obstaja pot takoj zaključi izvajanje + if not obstaja_pot: + return False + + # to be continued, preveriti moramo še če se vse povezave stikajo skupaj + + + def main(): povezave = [ (11, 10, 13, 10), @@ -85,17 +164,53 @@ def main(): (7, 14, 3, 14), (9, 17, 9, 14), ] - # 6 - # print(pravilna((18, 5, 13, 5))) - # print(pravilna((5, 18, 5, 13))) - # print(pravilna((10, 18, 12, 4))) - # print(pravilna((10, 18, 10, 18))) - # na_povezavi(10, 19, (10, 22, 10, 20)) + pov = [ + (11, 10, 13, 10), - # print(povezave_tocke(3, 15, povezave)) + (2, 12, 8, 12), + (6, 11, 6, 13), - print(secisce((10, 20, 10, 25), (8, 22, 18, 22))) - print(secisce((8, 20, 18, 20), (1, 25, 0, 25))) + (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) main() \ No newline at end of file