diff --git a/ipe/v2/nodes/formalizer.py b/ipe/v2/nodes/formalizer.py index 4490572..09ec36e 100644 --- a/ipe/v2/nodes/formalizer.py +++ b/ipe/v2/nodes/formalizer.py @@ -39,6 +39,13 @@ - 알고리즘/도메인을 **재결정하지 말 것** — 시드의 reduction_core/composition/domain 은 이미 동결되어 그대로 유지된다. 당신은 입출력 형식과 불변식만 형식화한다. - io_schema 는 정답을 노출하지 않는 **중립 형식 계약** 이어야 한다 (은닉 유지). +- **output_format 은 도메인 의미가 아니라 인쇄 구조만 서술**한다: 출력 타입·개수·형식 + (예: '한 줄에 정수 하나', '공백 구분 정수 여러 개'), 1-indexed/0-indexed 위치인지, + 해 없음 sentinel(-1 등)만 명시하라. **그 값이 도메인에서 무엇을 뜻하는지(예: '누적 + 수확량' vs '단위 수확량', '최소 비용' vs '최대 이익')는 쓰지 말 것** — 답의 도메인 + 의미는 narrative(지문)가 단일 저작한다. output_format 에 도메인 해석을 박으면 + narrative 가 같은 의미를 독립 서술해 'output_format↔description' 용어 드리프트로 QA + ambiguity reject 된다(실측). 구조만 쓰면 어떤 도메인 서술과도 모순되지 않는다. - output_invariants 는 정답 검증에 쓰일 만큼 구체적이되 풀이를 누설하지 않게. - graph 입력은 **self-contained 단일 필드** 로 모델링한다 (weighted_edges/tree_edges 는 V·E 헤더를 자체 포함 — 정점 수 V 를 별도 int 필드로 분리하지 말 것: 입력 생성기 @@ -166,6 +173,9 @@ matrix/grid 같은 복잡 구조와 graph_shape/sequence_shape/string_shape 핀을 **쓰지 말 것** — 기초 입출력·산술·조건·반복은 그런 구조가 필요 없다. - **출력은 반드시 입력에 의존**한다 — 입력과 무관한 상수 출력 금지(퇴화 → difficulty reject). +- **output_format 은 인쇄 구조만**(타입·개수·형식·sentinel) 서술하고, 그 값의 도메인 + 의미는 쓰지 말 것 — 의미는 narrative 가 단일 저작한다(output_format↔description 용어 + 드리프트 방지). - 입력을 읽어 간단히 계산(합·차·비교·카운트·누적)해 출력하는 수준. 정렬·이분탐색·그래프 같은 알고리즘을 끌어들이지 말 것(끌어들이면 입문이 아니다). - 퇴화/경계 입력의 특별 처리(빈 입력·N=0 등)를 **지어내지 말 것** — constraints 가 허용하는