def rotate(a,b,c): return (b[0]-a[0])*(c[1]-b[1])-(b[1]-a[1])*(c[0]-b[0]) def jarvismarch(A): n = len(A) # 1. Пошук стартової точки P = [] for i in range(0,n): P.append(i) for i in range(1,n): if ((a[P[i]][0] < a[P[0]][0]) or ((a[P[i]][0] == a[P[0]][0]) and (a[P[i]][1] < a[P[0]][1]))): P[i], P[0] = P[0], P[i] H = [P[0]] line=True; # 2. Перевірка розташування на одній прямій dj=abs(a[0][0]-a[1][0])+abs(a[0][1]-a[1][1]) j=1 for i in range(2,n): line=line and (rotate(a[P[0]],a[P[1]],a[P[i]])==0) di=abs(a[P[0]][0]-a[P[i]][0])+abs(a[P[0]][1]-a[P[i]][1]) if dj