Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

인터랙티브 문제 출제 가이드 proposal #2

Open
Bubbler-4 opened this issue Oct 9, 2023 · 1 comment
Open

인터랙티브 문제 출제 가이드 proposal #2

Bubbler-4 opened this issue Oct 9, 2023 · 1 comment

Comments

@Bubbler-4
Copy link
Contributor

참고한 문제들:

디스크립션

  • 문제의 첫 줄에 이 문제가 인터랙티브 문제임을 강조할 수도 있지만, 하지 않아도 됩니다.
  • "입력" 섹션에는 인터랙터가 먼저 전달하는 정보를 서술합니다.
  • "출력" 섹션에는 참가자의 코드가 출력할 수 있는 쿼리와 그에 대한 인터랙터의 답변을 서술합니다.
  • 모든 출력 후에는 flush(출력 버퍼 비우기)를 수행해야 함을 명시합니다. 주요 언어(C/C++, Java, Python)에서 flush를 수행하는 방법을 첨부할 수 있지만 필수는 아닙니다.
  • "인터랙션 방법을 지키지 않거나 문제의 조건을 지키지 않으면 예상치 못한 채점 결과를 받을 수 있음"을 명시합니다. 틀린 코드를 내면 WA를 받을 것으로 예상하지만 BOJ에서는 TLE 또는 RE를 받는 경우가 많습니다.
  • 예제는 인터랙션의 순서가 잘 보이도록 실제로 출력되지 않는 개행을 추가하는 것이 일반적입니다.
  • 적응적 인터랙터가 있는지 여부를 명시하는 것이 좋습니다. 정해가 비적응적 인터랙터를 이용한다면 반드시 명시하여야 합니다. 대회에서 질문이 꼭 들어오는 부분이기도 합니다.

데이터

  • 인터랙티브 문제의 데이터는 참가자 코드에 직접 입력되지 않기 때문에 비적응적 인터랙터의 내부 데이터, 적응적 인터랙터의 전략 번호 등으로 자유롭게 사용할 수 있습니다. 각각의 데이터가 무엇을 의도한 것인지 데이터 설명과 인터랙터 코드에 명시되어 있어야 합니다.

Interactor 작성

  • Interactor는 C 혹은 C++로 작성해야 합니다.
  • Interactor 코드에서는 #define을 사용하면 안 됩니다.
  • Interactor 내에서 다음 함수를 사용하지 않습니다.
    • readEoln()
    • readEof()
    • readSpace()

대회 진행

  • 대회 공지에 "인터랙티브 문제가 포함됨"을 명시하고, 참가자들이 인터랙티브 입출력 방식을 미리 학습할 수 있도록 하여야 합니다. (TODO: 적절한 인터랙티브 예시 문제 선정)
@shiftpsh
Copy link
Member

shiftpsh commented Oct 9, 2023

제안 감사드립니다! 일단 제가 생각한 것과 큰 차이가 없는 것 같아서, 이후 추가하도록 하겠습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants