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- 모델
- 기본 URL과 필요한 API 키로 OpenAI 호환 또는 Anthropic 엔드포인트를 설정하고 연결을 테스트하세요. 로컬 모델 서버는 실행 중이어야 합니다. 원격 도구는 데이터를 별도로 전송할 수 있습니다.
- 프로젝트
- 빈 그룹과 경쟁 선택을 시험하고 반복되거나 빠진 선호를 거부하며 블로킹 쌍이 없는지 확인합니다.
- 적용하기 전에 검토하세요
- 실제 동작을 예상 결과와 비교하세요. 검사가 실패하면 다음 변경을 하기 전에 원인을 조사하세요.
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 AI 코딩 작업 공간을 제공합니다. 애플리케이션이 받는 선호 정보와 준수해야 할 제약부터 정리한 뒤 현재 구현을 살펴보도록 요청하세요.
안정적 선호 매칭 예제는 가능한 개발 작업 하나를 보여줍니다. 완전한 순위의 검증, 처리 중 미매칭 작업의 표현, 최종 쌍이 호출자에게 전달되는 방식을 검토할 수 있습니다. 요구사항에 동순위, 누락된 선호, 크기가 다른 집단이 포함된다면 수정을 요청하기 전에 이러한 불일치를 파악하세요. 예제의 더 좁은 가정이 숨은 애플리케이션 정책으로 굳어지지 않도록 대화 내내 명확히 드러내야 합니다.
지원되는 OpenAI 호환 또는 Anthropic 엔드포인트를 통해 무검열 AI 모델을 선택할 수 있으며, 필요한 경우 인증 정보를 사용합니다. 컨텍스트, 도구, 제한은 모델과 서버가 정합니다. 제안된 입력 검사와 결과 처리를 검토한 뒤 결과를 직접 살펴볼 수 있는 작은 선호 표로 테스트하세요. 별도의 로컬 모델 서버는 추론만 담당하며, 다른 도구는 여전히 외부 서비스에 연결될 수 있습니다.
선호 기반 기능을 명확히 하기
유용한 배정 요구사항은 어떻게 작성하나요?
집단, 허용되는 선호 형식, 최종 배정이 충족해야 할 속성을 설명하세요. 사람이 살펴볼 수 있는 작은 예제를 제공하세요. 애플리케이션이 결과를 어떻게 판단해야 하는지 밝히지 않은 채 ‘최선’처럼 포괄적인 단어를 쓰지 마세요.
주변 계약을 바꾸지 않고 동순위를 추가할 수 있나요?
그렇다고 가정하지 마세요. 예제는 완전하고 엄격한 선호 순서를 전제로 합니다. 동순위는 입력 표현과 적절한 결과의 의미를 모두 바꿀 수 있습니다. 알고리즘이나 호출자 변경 제안을 검토하기 전에 이러한 결정을 명시적으로 요청하세요.
큰 테스트 데이터셋 없이 출력을 어떻게 살펴보나요?
작은 선호 표부터 시작해 결과 쌍이 명시한 속성을 충족하는지 확인하세요. 입력 거부를 테스트할 잘못된 순위도 포함하세요. 이러한 집중된 사례는 검토를 돕고, 더 넓은 입력 및 통합 요구사항은 애플리케이션 자체 테스트 모음에서 다뤄야 합니다.
PairCrest가 사용자에게 공정한 기준을 결정하나요?
이 소프트웨어 작업 공간은 배분 정책을 정하지 않습니다. 요구사항을 제공하고 그 결과를 평가하는 것은 사용자입니다. 도우미에게 구현 가정을 설명하도록 요청한 뒤, 그 가정이 애플리케이션에 적용하려는 규칙과 일치하는지 검토하세요.
PairCrest · 업데이트 2026-10-25