2024-12-05 15:55:57 +01:00

102 lines
2.0 KiB
Python

def pravilna(povezava):
x0, y0, x1, y1 = povezava
# preveri dolzino
prekratka = (abs(x1-x0) + abs(y1-y0)) > 0
# preveri, da je vodoravna ali navpicna in ne diagonalna
diagonalna = (x0 == x1) or (y0 == y1)
return prekratka and diagonalna
def pravilne(povezave):
for i in povezave:
if not pravilna(i):
return False
return True
def urejena(povezava):
x0, y0, x1, y1 = povezava
if x1 < x0 or y1 < y0:
return x1, y1, x0, y0
return povezava
def na_povezavi(x, y, povezava):
x0, y0, x1, y1 = urejena(povezava)
return x0 <= x <= x1 and y0 <= y <= y1
def povezave_tocke(x, y, povezave):
r = set()
for i in povezave:
if na_povezavi(x, y, i):
r.add(urejena(i))
return r
def generiraj_tuples_povezava(povezava):
pov = []
z0 = None
z1 = None
x0, y0, x1, y1 = povezava
if x0 == x1:
z0 = y0
z1 = y1
else:
z0 = x0
z1 = x1
for ipsilon in range(z0, z1 + 1):
r = (x0, ipsilon)
pov.append(r)
return pov
def secisce(povezava1, povezava2):
if not pravilna(povezava1) and not pravilna(povezava2): return None
povezava1 = urejena(povezava1)
povezava2 = urejena(povezava2)
pov1 = generiraj_tuples_povezava(urejena(povezava1))
pov2 = generiraj_tuples_povezava(urejena(povezava2))
print(povezava1)
print(pov1)
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),
]
# 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))
# print(povezave_tocke(3, 15, povezave))
print(secisce((10, 20, 10, 25), (8, 22, 18, 22)))
# print(secisce((8, 20, 18, 20), (1, 25, 0, 25)))
main()