Pencocokan preferensi stabil
Cocokkan dua kelompok beranggota paling banyak 20 dengan preferensi lengkap dan ketat.
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- Model
- Atur endpoint kompatibel OpenAI atau Anthropic dengan URL dasar dan kunci API jika diperlukan. Uji koneksi. Server model lokal harus berjalan; alat jarak jauh dapat mengirim data secara terpisah.
- Proyek
- Uji kelompok kosong dan pilihan bersaing, tolak preferensi berulang atau hilang dan pastikan tidak tersisa pasangan penghalang.
- Tinjau sebelum menerapkan
- Bandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain.
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 partnerPerjelas kebutuhan penugasan sebelum merevisi kode
Fitur penugasan memerlukan lebih dari daftar pasangan: perlu kejelasan tentang masukan yang valid dan syarat hasil yang dapat diterima. PairCrest menyediakan ruang kerja pemrograman AI Windows untuk membahas kebutuhan itu bersama berkas proyek yang relevan. Mulailah dari preferensi yang diterima aplikasi dan batasan yang harus dipatuhi, lalu minta pemeriksaan implementasi saat ini.
Contoh preferensi stabil menawarkan salah satu tugas pengembangan. Anda dapat meninjau validasi peringkat lengkap, representasi pekerjaan yang belum berpasangan selama pemrosesan, dan cara pasangan akhir diteruskan ke pemanggil. Jika kebutuhan mencakup peringkat seri, preferensi yang hilang, atau kelompok tidak sama besar, identifikasi ketidakcocokan itu sebelum meminta penyesuaian. Asumsi contoh yang lebih sempit harus tetap terlihat sepanjang diskusi, bukan menjadi kebijakan aplikasi yang tersembunyi.
Model AI tanpa sensor dapat dipilih melalui endpoint yang kompatibel dengan OpenAI atau endpoint Anthropic yang didukung, dengan kredensial bila diperlukan. Model dan server menentukan konteks, alat, serta batasan. Tinjau usulan pemeriksaan masukan dan penanganan hasil, lalu uji tabel preferensi kecil dengan hasil yang dapat Anda periksa. Server model lokal terpisah hanya mencakup inferensi; alat lain mungkin tetap terhubung ke layanan eksternal.
Memperjelas fitur berbasis preferensi
Seperti apa kebutuhan penugasan yang berguna?
Jelaskan kelompok, bentuk preferensi yang diizinkan, dan sifat yang harus dipenuhi penugasan akhir. Berikan contoh kecil yang dapat diperiksa orang. Hindari kata luas seperti terbaik tanpa menjelaskan cara aplikasi menilai hasil.
Bisakah saya menambahkan peringkat seri tanpa mengubah kontrak terkait?
Jangan berasumsi demikian. Contoh ini mengharapkan preferensi lengkap dengan urutan tegas. Peringkat seri dapat mengubah representasi masukan maupun makna hasil yang dapat diterima. Mintalah keputusan itu secara eksplisit sebelum meninjau algoritma atau perubahan pemanggil yang diusulkan.
Bagaimana memeriksa keluaran tanpa kumpulan data uji besar?
Mulailah dengan tabel preferensi kecil dan periksa pasangan yang dihasilkan terhadap sifat yang ditetapkan. Sertakan peringkat tidak valid untuk menguji penolakan. Kasus terarah ini mendukung peninjauan, sedangkan rangkaian pengujian aplikasi harus mencakup kebutuhan masukan dan integrasi yang lebih luas.
Apakah PairCrest menentukan apa yang adil bagi pengguna?
Ruang kerja perangkat lunak ini tidak menetapkan kebijakan alokasi Anda. Anda menyediakan kebutuhan dan menilai konsekuensinya. Minta asisten menjelaskan asumsi implementasi, lalu tinjau apakah asumsi tersebut sesuai dengan aturan yang dimaksudkan untuk aplikasi Anda.
PairCrest · Diperbarui 2026-10-25