Enveloppes convexes entières
Construis une enveloppe convexe antihoraire d’au plus 1000 points entiers, depuis le point lexicographiquement minimal.
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]- Projet
- Teste le vide, les doublons et les points colinéaires, en gardant seulement les extrémités et en refusant les coordonnées fractionnaires.
- Vérifiez avant d’appliquer
- Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications.
- Modèles
- Configurez un endpoint compatible OpenAI ou Anthropic avec son URL de base et une clé API si nécessaire. Testez la connexion. Un serveur local doit fonctionner ; les outils distants peuvent transmettre des données séparément.
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]Reliez les modifications géométriques à l’application qui les utilise
Le code géométrique est plus facile à examiner quand la sortie requise est définie en termes applicatifs. Hullspring est un espace de programmation avec IA pour Windows qui permet d’étudier cette exigence avec votre projet ouvert. Demandez au modèle connecté d’examiner le calcul concerné et ses consommateurs avant de suggérer des modifications, afin que la proposition réponde à un comportement réel au lieu de simplement réorganiser une formule.
Par exemple, un outil de sélection peut utiliser le contour extérieur d’un ensemble de points. Demandez une revue de l’effet des doublons et des points colinéaires sur ce contour, et précisez si les points intermédiaires des arêtes doivent figurer dans le résultat. Incluez l’appelant chargé du rendu et des cas de test représentatifs. Cela donne à l’assistant une tâche concrète sans supposer qu’un outil de sélection est fourni avec Hullspring.
Examinez l’ordre de sortie, la validation des entrées et le cas vide dans un correctif proposé, ainsi que la forme habituelle. Exécutez le projet avec des points alignés, des coordonnées répétées et un petit polygone. Comparez la séquence retournée aux attentes du consommateur ; le bon ensemble géométrique peut malgré tout produire un affichage incorrect si les conventions d’ordre ou de fermeture diffèrent.
Hullspring prend en charge les connexions aux modèles via des points de terminaison compatibles OpenAI ou Anthropic. Un modèle d’IA ablaté peut être sélectionné lorsqu’il est disponible, mais son service détermine les restrictions, la capacité de contexte et les outils. Utilisez la conversation pour clarifier vos choix d’implémentation et fondez la vérification sur les propres cas de test du projet.
Préparer une demande de maintenance géométrique
- Faut-il conserver les points colinéaires des arêtes dans le contour ?
Précisez l’exigence de votre consommateur. Certains usages ne nécessitent que les sommets extrêmes, tandis que d’autres conservent les points intermédiaires. Demandez au modèle d’examiner la convention actuelle et de rendre tout changement de politique explicite dans la proposition et les tests.
- Pourquoi inclure le code de rendu dans une revue de calcul ?
Il peut attendre un ordre de parcours particulier ou la répétition du sommet de fermeture. Un calcul peut retourner les points voulus tout en violant cette interface. Examiner le consommateur évite qu’une correction locale crée une régression visible.
- Quels cas de test révèlent rapidement les hypothèses ?
Utilisez un ensemble vide, un point, des doublons, une ligne droite et un petit polygone contenant un point intérieur. Écrivez la convention de sortie attendue pour chacun. Exécutez-les dans votre projet plutôt que de vous fier uniquement à une forme dessinée.
- Un correctif peut-il élargir incidemment les types de coordonnées acceptés ?
Traitez cela comme une modification distincte du contrat. Des représentations numériques différentes peuvent affecter les comparaisons et la validation. Demandez pourquoi cette extension est nécessaire et vérifiez les appelants avant de l’accepter dans une correction géométrique autrement ciblée.
Hullspring · Mis à jour 2026-10-25