Inviluppi convessi interi
Costruisci un inviluppo convesso antiorario di al massimo 1000 punti interi partendo dal minimo lessicografico.
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]- Progetto
- Prova ingresso vuoto, duplicati e punti collineari, conservando solo gli estremi e rifiutando coordinate frazionarie.
- Controlla prima di applicare
- Confronta il comportamento effettivo con il risultato atteso. Se una verifica fallisce, indaga la causa prima di altre modifiche.
- Modelli
- Configura un endpoint compatibile con OpenAI o Anthropic usando URL di base e chiave API, se necessaria. Prova la connessione. Il server locale deve essere in esecuzione; gli strumenti remoti possono trasmettere dati separatamente.
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]Collega le modifiche geometriche all’applicazione che le usa
Il codice geometrico diventa più facile da esaminare quando l'output richiesto è definito in termini applicativi. Hullspring è un ambiente di programmazione con IA per Windows in cui affrontare questo requisito con il progetto aperto. Chiedi al modello connesso di esaminare il calcolo pertinente e chi lo usa prima di suggerire modifiche, affinché la proposta risponda a un comportamento reale invece di limitarsi a riordinare una formula.
Per esempio, uno strumento di selezione potrebbe usare un contorno esterno attorno a un insieme di punti. Richiedi una revisione dell'effetto dei punti duplicati e collineari sul contorno e spiega se i punti intermedi dei bordi debbano far parte del risultato. Includi il chiamante che esegue il rendering e casi di prova rappresentativi. Questo offre all'assistente un'attività concreta senza presumere che Hullspring includa uno strumento di selezione.
Esamina una modifica proposta per ordine dell'output, convalida dell'input e caso vuoto, oltre alla forma tipica. Esegui il progetto con punti su una retta, coordinate ripetute e un piccolo poligono. Confronta la sequenza restituita con le aspettative di chi la usa: l'insieme geometrico corretto può comunque produrre una visualizzazione errata se differiscono le convenzioni di ordinamento o chiusura.
Hullspring supporta connessioni a modelli tramite endpoint compatibili con OpenAI o Anthropic. Puoi selezionare un modello IA abliterato dove disponibile, ma è il suo servizio a determinare restrizioni, capacità di contesto e strumenti. Usa la conversazione per chiarire le scelte implementative e mantieni la verifica ancorata ai casi di prova del progetto.
Preparare una richiesta di manutenzione geometrica
- I punti collineari sui bordi devono rimanere nel contorno?
Specifica il requisito di chi usa il risultato. Alcuni usi richiedono solo i vertici estremi, altri preservano i punti intermedi. Chiedi al modello di esaminare la convenzione attuale e rendere esplicito qualsiasi cambiamento di politica nella proposta e nei test.
- Perché includere il codice di rendering nella revisione di un calcolo?
Potrebbe aspettarsi un ordine di percorrenza specifico o un vertice finale ripetuto per la chiusura. Un calcolo può restituire i punti previsti ma violare quell’interfaccia. Esaminare chi usa il risultato aiuta a evitare che una correzione locale crei una regressione visibile.
- Quali casi di prova fanno emergere rapidamente le ipotesi?
Usa un insieme vuoto, un punto, duplicati, una retta e un piccolo poligono con un punto interno. Scrivi la convenzione di output attesa per ciascuno. Eseguili nel progetto senza affidarti soltanto a una forma disegnata.
- Una modifica può ampliare incidentalmente i tipi di coordinate accettati?
Consideralo un cambiamento distinto del contratto. Rappresentazioni numeriche diverse possono influenzare confronti e convalida. Chiedi perché sia necessaria l’estensione e controlla i chiamanti prima di accettarla come parte di una correzione geometrica altrimenti mirata.
Hullspring · Aggiornato 2026-10-25