Descarcă aplicația
Selectează un dosar și cere asistentului să citească fișierele relevante înainte de editare. Definește obiectivul și limitele sarcinii.
Construiește un înveliș convex antiorar din cel mult 1000 puncte întregi, pornind de la minimul lexicografic. Testează intrare goală, duplicate și puncte coliniare, păstrând doar extremitățile și respingând coordonate fracționare.
Selectează un dosar și cere asistentului să citească fișierele relevante înainte de editare. Definește obiectivul și limitele sarcinii.
Alege un endpoint compatibil. Instrumentele disponibile și calitatea răspunsurilor depind de modelul și serverul configurate.
Verifică modificările și rezultatele comenzilor. Rulează verificările proiectului înainte de acceptare; codul generat nu este testat automat.
Compară comportamentul real cu rezultatul așteptat. Dacă o verificare eșuează, cercetează cauza înainte de alte modificări.
def convex_hull(points):
if type(points) is not list or len(points) > 1000:
raise ValueError("hull.input")
if any(type(p) not in (tuple, list) or len(p) != 2 or
any(type(v) is not int for v in p) for p in points):
raise ValueError("hull.point")
ordered = sorted(set(map(tuple, points)))
if len(ordered) <= 1:
return ordered
def turn(a,b,c):
return (b[0]-a[0])*(c[1]-a[1])-(b[1]-a[1])*(c[0]-a[0])
def chain(sequence):
out = []
for p in sequence:
while len(out) >= 2 and turn(out[-2],out[-1],p) <= 0:
out.pop()
out.append(p)
return out
return chain(ordered)[:-1]+chain(reversed(ordered))[:-1]Verifică înainte de aplicare. Verifică modificările și rezultatele comenzilor. Rulează verificările proiectului înainte de acceptare; codul generat nu este testat automat.