ocena 7 - fin
This commit is contained in:
parent
da5ef18537
commit
4cbbe0392d
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()
|
Loading…
x
Reference in New Issue
Block a user