ocena 7 - fin
This commit is contained in:
		
							
								
								
									
										120
									
								
								program.py
									
									
									
									
									
								
							
							
						
						
									
										120
									
								
								program.py
									
									
									
									
									
								
							@@ -1,7 +1,10 @@
 | 
				
			|||||||
 | 
					def razdalja_povezava(x0, y0, x1, y1):
 | 
				
			||||||
 | 
					    return abs(x1-x0) + abs(y1-y0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def pravilna(povezava):
 | 
					def pravilna(povezava):
 | 
				
			||||||
    x0, y0, x1, y1 = povezava
 | 
					    x0, y0, x1, y1 = povezava
 | 
				
			||||||
    # preveri dolzino
 | 
					    # 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
 | 
					    # preveri, da je vodoravna ali navpicna in ne diagonalna
 | 
				
			||||||
    diagonalna = (x0 == x1) or (y0 == y1)
 | 
					    diagonalna = (x0 == x1) or (y0 == y1)
 | 
				
			||||||
@@ -72,28 +75,31 @@ def secisce(povezava1, povezava2):
 | 
				
			|||||||
    return None
 | 
					    return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def urejeni_povezavi(povezava1, povezava2):
 | 
					def urejeni_povezavi(povezava1, povezava2):
 | 
				
			||||||
    x0_1, y0_1, x1_1, y1_1 = urejena(povezava1)
 | 
					    pov1 = urejena(povezava1)
 | 
				
			||||||
    x0_2, y0_2, x1_2, y1_2 = urejena(povezava2)
 | 
					    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:
 | 
					    if x0_1 < x0_2:
 | 
				
			||||||
        return povezava1, povezava2
 | 
					        return pov1, pov2
 | 
				
			||||||
    elif x0_2 < x0_1:
 | 
					    elif x0_2 < x0_1:
 | 
				
			||||||
        return povezava2, povezava1
 | 
					        return pov2, pov1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if y0_1 < y0_2:
 | 
					    if y0_1 < y0_2:
 | 
				
			||||||
        return povezava1, povezava2
 | 
					        return pov1, pov2
 | 
				
			||||||
    elif y0_2 < y0_1:
 | 
					    elif y0_2 < y0_1:
 | 
				
			||||||
        return povezava2, povezava1
 | 
					        return pov2, pov1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if x1_1 < x1_2:
 | 
					    if x1_1 < x1_2:
 | 
				
			||||||
        return povezava1, povezava2
 | 
					        return pov1, pov2
 | 
				
			||||||
    elif x1_2 < x1_1:
 | 
					    elif x1_2 < x1_1:
 | 
				
			||||||
        return povezava2, povezava1
 | 
					        return pov2, pov1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if y1_1 < y1_2:
 | 
					    if y1_1 < y1_2:
 | 
				
			||||||
        return povezava1, povezava2
 | 
					        return pov1, pov2
 | 
				
			||||||
    elif y1_2 < y1_1:
 | 
					    elif y1_2 < y1_1:
 | 
				
			||||||
        return povezava2, povezava1
 | 
					        return pov2, pov1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # sigurno ne bosta dve identični povezavi prileteli sem? :D
 | 
					    # sigurno ne bosta dve identični povezavi prileteli sem? :D
 | 
				
			||||||
    if x0_1 == x0_2 and y0_1 == y0_2: return None
 | 
					    if x0_1 == x0_2 and y0_1 == y0_2: return None
 | 
				
			||||||
@@ -129,13 +135,9 @@ def krizisca(povezave):
 | 
				
			|||||||
    return krizisce
 | 
					    return krizisce
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def mozna_pot(pot, mreza):
 | 
					def mozna_pot(pot, mreza):
 | 
				
			||||||
    povezave_obstajajo = True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for povezava in pot:
 | 
					    for povezava in pot:
 | 
				
			||||||
        # dobimo urejeno povezavo
 | 
					        # dobimo urejeno povezavo
 | 
				
			||||||
        pov = urejena(povezava)
 | 
					        pov = urejena(povezava)
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        obstaja_pot = False
 | 
					        obstaja_pot = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # preverimo če obstaja povezava v mreži
 | 
					        # preverimo če obstaja povezava v mreži
 | 
				
			||||||
@@ -149,68 +151,38 @@ def mozna_pot(pot, mreza):
 | 
				
			|||||||
            return False
 | 
					            return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # to be continued, preveriti moramo še če se vse povezave stikajo skupaj
 | 
					        # 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():
 | 
					def main():
 | 
				
			||||||
    povezave = [
 | 
					    print()
 | 
				
			||||||
        (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)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
main()
 | 
					main()
 | 
				
			||||||
		Reference in New Issue
	
	Block a user