Стійке зіставлення вподобань
Зіставте дві групи до 20 учасників за повними строгими списками вподобань.
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- Моделі
- Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.
- Проєкт
- Перевірте порожні групи та конкурентний вибір, відхиляючи повтори й пропуски та перевіряючи відсутність блокувальної пари.
- Перевірте перед застосуванням
- Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.
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Уточніть вимоги до призначень перед зміною коду
Функції призначення потрібен не лише список пар: їй потрібне чітке визначення допустимих вхідних даних і прийнятного результату. PairCrest надає робоче середовище програмування з ШІ у Windows для обговорення цих вимог разом із відповідними файлами проєкту. Почніть із вподобань, які отримує застосунок, і обмежень, яких він має дотримуватися, а потім попросіть перевірити поточну реалізацію.
Приклад стабільного зіставлення за вподобаннями пропонує одне з можливих завдань розробки. Можна перевірити валідацію повних рейтингів, подання ще не зіставлених елементів під час обробки та передавання кінцевих пар коду виклику. Якщо ваші вимоги передбачають однакові ранги, відсутні вподобання або нерівні групи, визначте цю невідповідність перед запитом на адаптацію. Вужчі припущення прикладу мають залишатися явними протягом обговорення, а не ставати прихованою політикою застосунку.
Модель ШІ без цензури можна вибрати через підтримувану сумісну з OpenAI або Anthropic кінцеву точку з обліковими даними, коли вони потрібні. Модель і сервер визначають контекст, інструменти та обмеження. Перевірте запропоновану валідацію вхідних даних і обробку результатів, а потім протестуйте невеликі таблиці вподобань із результатами, які можете перевірити. Окремий локальний сервер моделі охоплює лише виконання моделі; інші інструменти все ще можуть підключатися до зовнішніх сервісів.
Уточнення функції на основі вподобань
Як виглядає корисна вимога до призначення?
Опишіть групи, допустимі форми вподобань і властивість, якій має відповідати кінцеве призначення. Наведіть невеликий приклад, який люди можуть перевірити. Уникайте загальних слів на кшталт «найкращий», не пояснивши, як застосунок має оцінювати результат.
Чи можна додати однакові ранги, не змінюючи решту контракту?
Не варто цього припускати. Приклад очікує повні строгі вподобання. Однакові ранги можуть змінити і подання вхідних даних, і значення прийнятного результату. Попросіть явно визначити ці рішення перед перевіркою будь-якого запропонованого алгоритму або зміни коду виклику.
Як перевірити результат без великого тестового набору?
Почніть із невеликих таблиць вподобань і перевірте отримані пари щодо зазначеної властивості. Додайте некоректні рейтинги для перевірки відхилення. Ці цільові випадки допомагають перевірці, тоді як власний набір тестів застосунку має охоплювати ширші вимоги до вхідних даних та інтеграції.
Чи визначає PairCrest, що справедливо для користувачів?
Робоче середовище розробки не визначає вашу політику розподілу. Ви задаєте вимоги й оцінюєте їхні наслідки. Попросіть асистента пояснити припущення реалізації, а потім перевірте, чи відповідають вони правилам, які має використовувати застосунок.
PairCrest · Оновлено 2026-10-25