def rotate(a,b,c) return (b[0]-a[0])*(c[1]-b[1])-(b[1]-a[1])*(c[0]-b[0]) end def jarvismarch(a) n = a.length # 1. Пошук стартової точки p = [] for i in 0...n p.push(i) end for i in 1...n if ((a[p[i]][0] < a[p[0]][0]) || ((a[p[i]][0] == a[p[0]][0]) && (a[p[i]][1] < a[p[0]][1]))) p[i], p[0] = p[0], p[i] end end h = [p[0]] line=true; # 2. Перевірка розташування на одній прямій dj=(a[0][0]-a[1][0]).abs+(a[0][1]-a[1][1]).abs j=1 for i in 2...n line=line && (rotate(a[p[0]],a[p[1]],a[p[i]])==0) di=(a[p[0]][0]-a[p[i]][0]).abs+(a[p[0]][1]-a[p[i]][1]).abs if dj