ocena 7 - krizisca in začetek mozna_pot
This commit is contained in:
parent
2f0c609d23
commit
d538b6236a
2
.idea/KolesarjenjePoManhattnu.iml
generated
2
.idea/KolesarjenjePoManhattnu.iml
generated
@ -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
2
.idea/misc.xml
generated
@ -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>
|
137
program.py
137
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()
|
Loading…
x
Reference in New Issue
Block a user