ocena 7 - krizisca in začetek mozna_pot
This commit is contained in:
		
							
								
								
									
										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()
 | 
			
		||||
		Reference in New Issue
	
	Block a user