본문 바로가기
C.W.K.
Stream
Lesson 05 of 05 · published

심사단은 판결이 아니야

~11 min · 심사단, 심사위원, 판, 아빠-통제

Level 0찬 쇠
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

심사단은 판결이 아니야

Open Run의 심사위원은 join anvil bench #N으로 따로 있는 대기열에 참가해. 공개 안내판은 요약과 규약만 보여줘. 참가한 뒤에 심사위원은 과제서, 선언된 규칙과 기준, 보관된 제출 나무, 선택 경로 보고서와 진행 방식 공개, 그리고 똑같이 재현되는 증거 묶음을 받아. 참가자의 yard나 아빠의 정직한 조종석은 절대 못 받아.

유효한 심사 하나가 들어오면 accepted: true로 접수를 알려. 이 표시는 표 하나가 형식 검사를 통과해 저장됐다는 뜻이지, 결과물이 채택됐다는 뜻도 판이 닫혔다는 뜻도 아니야. 심사단이 열려 있는 동안 아빠는 심사위원을 더 부를 수 있어.

살아 있는 심사위원이 전부 판정을 내면 엔진은 bench_complete를 알리고 기다려. 그 심사단을 닫는 건 아빠야. 마지막이 아닌 Elimination 심사단이나 Synthesis의 지목 심사단을 닫으면 회전을 합산하고 결과를 적용한 뒤 다음 단계를 열어. 마지막 심사단에서 아빠가 POST /decide를 부를 때만 판을 합산하고 회차를 decided로 옮겨. 동점은 그대로 설 수 있고, 봉인 레일의 결승 규칙은 여기로 옮겨오지 않아.

그다음 아빠가 판결의 동작을 해. 채택이나 이견을 기록하고 회차를 확정하며, 판과 내보내기와 나중 분석을 위해 기록을 공개해. 이미 끝난 심사위원 세션은 따로 공개를 받는 대상이 아니야. 재대결은 새 회차야.

표 접수, 심사단 완료, 심사단 닫힘, 마지막 판 결정, 회차 확정. 중간 심사단과 마지막 심사단은 같은 손을 쓰지만 결과가 달라.

Code

Open Run 심사단이 닫히는 순서·python
def store_ballot(board, pick):
    board["ballots"].append(pick)
    return {"accepted": True}          # 표 하나가 저장됐다는 뜻, 그 이상 아님


def bench_status(board):
    if len(board["ballots"]) < board["live_judges"]:
        return "judging"
    return "bench_complete"            # 그래도 엔진은 닫지 않는다


def decide(board, by):
    if by != "아빠":
        raise PermissionError("판을 닫는 건 아빠뿐이다")
    if bench_status(board) != "bench_complete":
        raise ValueError("아직 표가 다 안 들어왔다")
    tally = {p: board["ballots"].count(p) for p in set(board["ballots"])}
    top = max(tally.values())
    winners = sorted(p for p, n in tally.items() if n == top)
    return {"state": "decided", "tally": tally, "winners": winners}


board = {"ballots": [], "live_judges": 2}
print(store_ballot(board, "A"), bench_status(board))
store_ballot(board, "B")
print(bench_status(board))

try:
    decide(board, by="engine")
except PermissionError as exc:
    print(exc)

out = decide(board, by="아빠")
print(out)                             # 동점은 동점으로 선다 — 결승을 짓지 않는다

External links

Exercise

Synthesis 회차 하나를 지목 심사단 완료, 아빠의 중간 닫기, 종합 작업, 마지막 심사단 완료, 아빠의 결정 호출, 판결까지 따라가 봐.
Hint
마지막 심사단을 닫아야만 결정이 되고, 판결이 확정하며 기록을 공개해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.