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):
 | 
			
		||||
    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()
 | 
			
		||||
		Reference in New Issue
	
	Block a user