Abbinamento stabile delle preferenze
Abbina due gruppi di al massimo 20 membri con liste complete e strette di preferenze.
from collections import deque
def stable_pairs(proposers, receivers):
if type(proposers) not in (list, tuple) or type(receivers) not in (list, tuple):
raise ValueError("preference tables must be lists or tuples")
n = len(proposers)
if n > 20 or len(receivers) != n: raise ValueError("equal sizes up to 20")
for rows in (proposers, receivers):
for row in rows:
if type(row) not in (list, tuple) or len(row) != n or any(type(v) is not int for v in row) or set(row) != set(range(n)):
raise ValueError("complete strict preferences")
ranks = [{v:i for i,v in enumerate(row)} for row in receivers]
free, next_choice = deque(range(n)), [0]*n
owner, partner = [None]*n, [None]*n
while free:
p = free.popleft()
r = proposers[p][next_choice[p]]
next_choice[p] += 1
old = owner[r]
if old is None or ranks[r][p] < ranks[r][old]:
owner[r], partner[p] = p, r
if old is not None: partner[old] = None; free.append(old)
else: free.append(p)
return partner- 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.
- Progetto
- Prova gruppi vuoti e scelte concorrenti, rifiutando preferenze ripetute o mancanti e verificando l’assenza di coppie bloccanti.
- Controlla prima di applicare
- Confronta il comportamento effettivo con il risultato atteso. Se una verifica fallisce, indaga la causa prima di altre modifiche.
from collections import deque
def stable_pairs(proposers, receivers):
if type(proposers) not in (list, tuple) or type(receivers) not in (list, tuple):
raise ValueError("preference tables must be lists or tuples")
n = len(proposers)
if n > 20 or len(receivers) != n: raise ValueError("equal sizes up to 20")
for rows in (proposers, receivers):
for row in rows:
if type(row) not in (list, tuple) or len(row) != n or any(type(v) is not int for v in row) or set(row) != set(range(n)):
raise ValueError("complete strict preferences")
ranks = [{v:i for i,v in enumerate(row)} for row in receivers]
free, next_choice = deque(range(n)), [0]*n
owner, partner = [None]*n, [None]*n
while free:
p = free.popleft()
r = proposers[p][next_choice[p]]
next_choice[p] += 1
old = owner[r]
if old is None or ranks[r][p] < ranks[r][old]:
owner[r], partner[p] = p, r
if old is not None: partner[old] = None; free.append(old)
else: free.append(p)
return partnerRendi visibili i requisiti di assegnazione prima di rivedere il codice
Una funzione di assegnazione richiede più di un elenco di coppie: serve una descrizione chiara degli input validi e di ciò che rende accettabile un risultato. PairCrest offre uno spazio di lavoro Windows con IA per discutere questi requisiti insieme ai file pertinenti del progetto. Parti dalle preferenze ricevute dall'applicazione e dai vincoli che deve rispettare, poi richiedi un esame dell'implementazione attuale.
L'esempio di abbinamento stabile per preferenze offre una possibile attività di sviluppo. Potresti verificare come vengono validate le graduatorie complete, come viene rappresentato il lavoro non ancora abbinato durante l'elaborazione e come gli abbinamenti finali raggiungono il chiamante. Se i requisiti includono parità, preferenze mancanti o gruppi di dimensioni diverse, identifica questa discrepanza prima di richiedere un adattamento. Le ipotesi più restrittive dell'esempio devono restare visibili durante la discussione anziché diventare regole nascoste dell'applicazione.
Un modello IA senza censura può essere scelto tramite un endpoint supportato compatibile con OpenAI o Anthropic, con credenziali ove richieste. Modello e server determinano contesto, strumenti e restrizioni. Rivedi i controlli degli input e la gestione dei risultati proposti, poi prova piccole tabelle di preferenze con esiti che puoi esaminare. Un server di modelli locale separato copre soltanto l'inferenza; altri strumenti possono comunque collegarsi a servizi esterni.
Chiarire una funzione basata sulle preferenze
Come si presenta un requisito di assegnazione utile?
Descrivi i gruppi, le forme di preferenza ammesse e la proprietà che l'assegnazione finale deve soddisfare. Fornisci un piccolo esempio esaminabile. Evita parole generiche come migliore senza specificare come l'applicazione debba valutare un risultato.
Posso aggiungere parità senza cambiare il contratto circostante?
Non darlo per scontato. L'esempio richiede preferenze complete e strette. Le parità possono cambiare sia la rappresentazione degli input sia il significato di un risultato accettabile. Richiedi decisioni esplicite su questi aspetti prima di rivedere qualsiasi algoritmo o modifica al chiamante proposti.
Come posso esaminare l'output senza un grande insieme di dati di prova?
Parti da piccole tabelle di preferenze e controlla le coppie risultanti rispetto alla proprietà dichiarata. Includi graduatorie non valide per verificare il rifiuto. Questi casi mirati sostengono la revisione, mentre la suite di test dell'applicazione dovrebbe coprire i requisiti più ampi di input e integrazione.
PairCrest decide che cosa è equo per gli utenti?
Lo spazio di lavoro software non definisce le tue regole di assegnazione. Sei tu a fornire i requisiti e valutarne le conseguenze. Chiedi all'assistente di spiegare le ipotesi dell'implementazione, poi verifica che corrispondano alle regole che l'applicazione deve usare.
PairCrest · Aggiornato 2026-10-25