티스토리 뷰
https://polygon.codeforces.com/
폴리곤은 알고리즘 문제를 출제할 때 유용하게 쓸 수 있는 일종의 플랫폼이다.
문제를 풀 수 있는 환경을 제공하는 곳이 아니라, 데이터를 만들고 솔루션을 검증해볼 수 있는 사이트이다. 코드포스 라운드 공지에 자주 적혀 있는 폴리곤도 여기다. 이번 RUN 가을 대회를 준비하면서 처음 써봤는데 많은 도움이 돼서 사용법을 정리해둔다.
로그인을 한 다음 New Problem을 누르면 새 문제 준비를 시작할 수 있다. 문제 이름을 입력하면 메인 화면에 다음과 같이 문제가 생긴다.
Start를 누르면 해당 문제 관리 페이지에 들어가진다.
메뉴에 있는 각각의 기능을 요약하면 다음과 같다.
General info |
시간 제한, 메모리 제한, 문제가 파일입출력을 사용할 경우 입출력 파일의 이름에 관한 설정이다. 'Are tests well-formed?' 버튼을 선택하면 문제에서 주어지는 입력 데이터가 회색 글씨로 적힌 조건을 만족하는지 검사해준다. 체크하는 것이 더 좋다. |
Statement |
문제 본문, 입출력에 관한 조건, 예제 등 디스크립션을 관리한다. 언어별로 따로 관리할 수 있다(영어버전, 한국어버전 등). |
Files |
나중에 쓰이는 Checker, Validator, Generator 소스같은 파일을 업로드 하는 곳이다. Solution의 경우 Solution files에 따로 관리한다. |
Checker |
채점 프로그램을 지정하는 곳이다. 정답이 deterministic하면 주어지는 기본 체커를 사용하면 되고 SPJ가 필요한 경우 구현해서 사용하면 된다. |
Validator |
입력 데이터가 오류가 없는지 검사하는 프로그램을 지정하는 곳이다. |
Tests |
문제 입력으로 쓰일 데이터를 관리하는 곳이다. 직접 만들어서 업로드 할 수도 있고 Generator(데이터 생성기)를 만들고 그걸 실행하는 스크립트를 짜서 자동 생성할 수도 있다. |
Stresses |
정답 소스와 틀려야 하는 소스 두개를 지정해주면 데이터를 계속 랜덤하게 만들어 두 소스의 결과가 다른 데이터를 찾아준다. 즉 틀린 소스의 반례를 찾아준다. |
Solution files |
문제 풀이 소스를 관리하는 곳이다. 각 소스에 Type을 지정해서 정답 소스, 틀린 소스, 시간 초과 소스 등으로 분류할 수 있다. |
Invocations |
업로드한 솔루션 중 몇개와 테스트 몇개를 선택하면 선택한 것들에 대해 결과가 제대로 나오는지(틀린 소스가 정답 소스와 다른 결과가 제대로 나오는지, 정답 소스가 제한시간 안에 종료되는지) 검증해준다. |
Issues |
Github의 issue와 비슷한 것 같은데 사용해보지 않았다. |
Packages |
준비한 내용들을 한 묶음으로 만들어 다운로드 받을 수 있다. Create package에서 Full을 선택하고 Download에서 Linux를 선택해 받는 것이 좋다. 다운로드 받기 전 Verification(=모든 솔루션과 모든 Tests에 대해 Invocation을 하는 것과 동일한 작업)을 성공해야 받을 수 있다. |
Manage access |
다른 사람과 공동 작업을 할 때 사용한다. 유저를 초대하거나 권한을 지정할 수 있다. 여러명과 공동작업을 할 경우 오른쪽 아래에 나오는 Commit Changes를 눌러야 자신이 한 작업이 최신 버전에 반영된다. |
Checker, Validator, Generator의 경우 testlib.h 이라는 헤더 파일을 사용할 수 있다. 주된 용도는 재현 가능한 랜덤 함수의 사용과 문자열 패턴 매칭이다. testlib.h의 랜덤 함수는 프로그램을 실행했을 때 주어진 argument가 같으면 항상 같은 결과를 반환하기 때문에 랜덤으로 생성한 데이터를 argument의 값 만으로 보관할 수 있다.
이제 각 기능을 세부적으로 살펴보자.
Statements
RUN 가을 대회의 경우 한국어/영어를 모두 지원해야 했으므로 문제 지문을 두가지 버전으로 만들었다. TeX 문법을 사용할 수 있다. 사용 방법이 직관적이라 별다른 내용은 필요 없고 디스크립션에 사진을 올리는 방법만 적겠다.
넣고 싶은 사진을 아래쪽에 있는 'Statement Resource Files'의 'Add Files'를 통해 업로드하자.
그 다음 TeX 문법을 이용해 넣고 싶은 위치에 다음 내용을 써주자.
\begin{center} \includegraphics[bb=0 0 100 200]{picture.png} \end{center} |
예를 들어 이렇게 적은 뒤
In HTML을 눌러 보면 이렇게 사진이 끼워져 나온다.
추가로 주의할 점은 디스크립션에 한글이 들어갈 경우 In HTML으로 볼 땐 잘 보이지만 In PDF로 보면 에러가 생긴다. 또 HTML로 볼 때랑 PDF로 볼 때 그림의 위치가 달라지기 때문에 주의해야 한다. 가장 쉽게 한글판 문서를 만드는 방법은 디스크립션을 HTML로 띄운 뒤 전체 복사해서 MS word에 붙여 넣는 것이고 꽤 예쁘게 나온다. 근데 그냥 이런저런 문제점이 있으니까 디스크립션이 확정되고 나면 따로 텍이나 워드 파일로 관리하는게 나을 듯 하다.
Checker
Validator
TODO
Tests + Generator
TODO
'학업' 카테고리의 다른 글
Squeeze-and-Excitation Networks (0) | 2018.08.13 |
---|---|
Batch Normalization (0) | 2018.01.23 |
카카오 Code Festival 본선 1~6번 풀이 (10) | 2017.09.10 |
이 때까지 공부하는데 사용한 교재 목록 정리 (0) | 2017.03.23 |
C++ 기법 모음 (0) | 2016.09.18 |
- Total
- Today
- Yesterday
- grub window ubuntu
- boot-repair
- 우분투
- 우분투 14.04
- grub 윈도우 인식
- grub 우분투 인식
- 우분투 윈도우 멀티부팅
- 미국면허
- DMV
- 캘리포니아
- 레드우드시티
- 윈도우 7
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |