ocena 7 - krizisca in začetek mozna_pot

This commit is contained in:
Martin Vrhovšek 2024-12-05 23:05:43 +01:00
parent 2f0c609d23
commit d538b6236a
3 changed files with 128 additions and 13 deletions

View File

@ -4,7 +4,7 @@
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.13 (dodatne vaje1)" jdkType="Python SDK" />
<orderEntry type="jdk" jdkName="Python 3.12 (Novi asfalt)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

2
.idea/misc.xml generated
View File

@ -3,5 +3,5 @@
<component name="Black">
<option name="sdkName" value="Python 3.12 (kolesarjenje_po_manhattnu)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.13 (dodatne vaje1)" project-jdk-type="Python SDK" />
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (Novi asfalt)" project-jdk-type="Python SDK" />
</project>

View File

@ -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()