Download de toepassing
Selecteer een map en laat de assistent de relevante bestanden lezen voordat hij ze wijzigt. Benoem het doel en de grenzen van je opdracht.
Maak een tegenwijzerzin gerichte convexe omhulling van maximaal 1000 gehele punten, beginnend bij het lexicografisch kleinste punt. Test lege invoer, duplicaten en collineaire punten, behoud alleen uiterste eindpunten en weiger gebroken coördinaten.
Selecteer een map en laat de assistent de relevante bestanden lezen voordat hij ze wijzigt. Benoem het doel en de grenzen van je opdracht.
Kies een compatibel endpoint. Beschikbare hulpmiddelen en de kwaliteit van antwoorden hangen af van het ingestelde model en de server.
Controleer wijzigingen en uitvoer van opdrachten. Voer de projectcontroles uit voordat je het resultaat overneemt; gegenereerde code is niet automatisch getest.
Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen.
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]Controleer vóór het toepassen. Controleer wijzigingen en uitvoer van opdrachten. Voer de projectcontroles uit voordat je het resultaat overneemt; gegenereerde code is niet automatisch getest.