1. Register

Polygon 2015. 7. 22. 10:31

Polygon에 일단 계정을 만들어 봅시다. 보시다시피, Polygon의 계정은 Codeforces와는 별개입니다.



뭐 입력해야 할 게 보이지요. 이 글을 읽는 분들이라면 당연히 영어를 잘 하시는 분들이겠지만 굳이 해석을 하자면 다음과 같습니다.


<입력 대상>


  • First Name: 이름을 입력하시면 됩니다. 영어로 입력하시든 모국어로 입력하시든 별 상관은 없습니다.

  • Last Name:  자신의 성을 입력하시면 됩니다.

  • Email: 자신의 이메일을 입력하시면 됩니다. 이메일은 나중에 문제를 변경하였을 때, 알림을 받는 용도나, Polygon 계정을 까먹었을 때 임시 비밀번호를 받는 곳으로 사용됩니다. 한 이메일 계정은 한 Polygon 계정에만 사용 가능합니다.

이름, 성, 이메일은 로그인 후 자유롭게 변경이 가능합니다.

  • Login: 닉네임입니다. Polygon handle이라 생각하시면 편합니다. Codeforces handle처럼, 영문이나 일부 특수기호만 사용하는 것을 권장합니다. 이 닉네임이나 위의 이메일을, Polygon에 로그인할 때 ID로 사용하게 됩니다. 이 닉네임에 글자수 제한이 있는지는 잘 모르겠습니다.

  • Password: 비밀번호입니다만, 영문에 특수기호까지는 지원할 겁니다. 가급적이면 유니코드나 확장 아스키 같은 문자는 집어넣지 마시길 바랍니다. 비밀번호 또한 글자수 제한이 있는지는 모르겠습니다.

  • Confirm Password: 방금 전 입력하신 비밀번호를 똑같이 쳐 주시면 됩니다.


닉네임은 변경이 불가합니다. 다만 비밀번호는 로그인 후 자유롭게 바꿀 수 있습니다.


그리고 Terms of use(이용약관) 이 나와 있습니다. 번역하면 다음과 같습니다;


귀하는 Polygon을 문제로 만드는 용도로만 사용할 수 있습니다. (역자 : P2P 같은 사이트가 아닙니다)

귀하는 실명을 사용해야 하며 귀하에 관한 정보는 정확하며 진실되어야 합니다.

귀하는 다음과 같은 악의적인 코드를 포함하는 파일을 제출하면 안 됩니다:

  1. 트로이 목마;

  2. 루트킷;

  3. 백도어;

  4. 바이러스.

당신의 코드는 다음과 같은 행동을 할 수 없습니다:

  1. 네트워크에 접근하는 행위;

  2. 설명문에 직접적으로 명시된 파일 이외의 파일과 상호작용하는 행위;

  3. 시스템 보안을 공격하는 행위;

  4. 다른 프로그램을 실행하고 프로세스를 만드는 행위;

  5. 파일 시스템 권한을 변경하는 행위;

  6. 서브디렉토리와 작용하는 행위;

  7. GUI를 만들거나 변조하는 행위(역자 : 예시로 Java의 JFrame 등이 있습니다);

  8. 외부 기기와 작동하는 행위(스피커, 프린터 등);

  9. 운영체제 레지스트리와 작동하는 행위;

  10. 그 외 Polygon의 기능을 저해하는 행위.


위와 같은 사항을 만족하고 정확하게 자신의 정보를 서술하였다면 Register(등록) 버튼을 누르시길 바랍니다. 여담이지만 Polygon은 계정 탈퇴가 불가합니다. 이건 Codeforces도 마찬가지이지만요.


그러면 로그인 창이 뜹니다. 방금 전 만드신 계정으로 로그인을 하면 다음과 같은 화면이 나타날 겁니다. 참고로 계정을 만드실 때 'Login'에 써놓은 닉네임으로 로그인하나, Email로 로그인하나, 알파벳의 경우 대소문자 구별을 하지 않습니다.




축하드립니다! Polygon 계정을 만드는 데 성공하셨습니다.

'Polygon' 카테고리의 다른 글

5. Files  (0) 2015.07.28
4. Statement  (0) 2015.07.28
3. General Info  (0) 2015.07.22
2. Make a problem & Commit Changes  (0) 2015.07.22
0. Introduction  (0) 2015.07.22
Posted by Evenharder
,

0. Introduction

Polygon 2015. 7. 22. 09:21

'Professional way to prepare programming contest problem'

(프로그래밍 대회 문제를 준비하는 전문적인 방법)

 

세상에는 수많은 정보 문제들이 있습니다. 간단한 연산 문제부터 복잡한 알고리즘이 필요한 문제들까지, 다양한 문제들이 있지만 이들도 근본적인 공통점이 있습니다. 기본적으로 '문제'이기 때문에, description, input, output, 그리고 (주로 deterministic) 정해 solution이 존재한다는 것이죠. 풀라고 만든 것이 문제니까요.

 

다만 이러한 정보 문제들이 잘 만들어졌는지는, 출제자의 책임입니다. 대체로 국제적인 대회에서는 팀으로 서로 의견을 나누고 지적해가며 문제들을 만들어내겠지만, 혼자서 문제를 만드는 경우도 생기기 마련이죠. 그 경우 문제의 검증은 어떻게 해야 할까요? 문제의 검증에는 생각보다 많은 요소들이 들어갑니다. Time limit, memory limit, input format, output, 허를 찌르는 test case, 그리고 합당한 description main solution 등등......이를 모두 다 확인하는 프로그램을 직접 만드는 것은 상당히 힘듭니다.

 

이런 측면에서 만들어진 Polygon이라는 사이트가 있습니다. Polygon은 널리 알려진 programming community Codeforces의 개발자 Mike Mirzayanov가 만든 사이트입니다. Polygon은 기본적으로 문제를 만들고, 관련 코드를 저장하고, 검증하고 수 있습니다. 여러 가지 기술적 장치를 통해 input이 올바른지, main solution이 올바른지, 혹시 countercase는 있는지, time limit안에 잘 돌아가는지를 판별할 수 있기 때문입니다.

 

Mike Mirzayanov Polygon을 만든 이유는 다음과 같습니다.

(이하 내용은 http://codeforces.com/blog/entry/14184 의 일부 번역입니다.)

  • 1. Polygon은 오류를 방지합니다.

Input/Output이 올바른지, Input의 공백 및 개행 문자가 올바르게 들어가 있는지(특히 문자열 관련 문제에서 이는 중요해집니다), 문제 설명에 들어가 있는 IO Example이 실제로 문제의 Test 1으로 들어가 있는지(이건 일종의 불문율이자 배려이죠) 등을 방지할 수 있습니다.

  • 2. Polygon은 문제를 정해진 규격의 zip 파일로 만들 수 있습니다.

저는 여러 대회에서 문제를 만들고, 또이를 배포할 때의 package의 표준 형식이 뭔지는 잘 모르겠습니다만, Polygon은 문제를 다 만든 후 Package의 형태로 Statement, Test, Checker, Validator, Solution 등의 출제자들이 만든 코드와 실행 배치 파일들을 하나의 zip 파일로 만들어 줍니다.

  • 3. Polygon은 파일을 장기적으로 보존합니다.

문제를 만들면서 우리는 종종 코드를 덮어쓰기를 합니다. 이러면 과거의 코드 상태를 알 수가 없게 됩니다. Polygon은 여러 revision를 저장함으로써, 버전 비교 및 '아 이때는 이래서 잘 안 됐구나'하는 식으로 분석을 할 수 있습니다. 또, 이러한 revision은 얼마나 문제를 만들었는가를 알려주는 이정표가 되기도 합니다.

  • 4. Polygon은 프로그래밍 문제 만들기의 장벽을 낮춰 줍니다.

Polygon은 서버 관련 지식 없이도 사용할 수도 있고, 전 세계 각국에서 만든 사용자들이 똑같은 양식으로 문제를 만들 수 있게 해 상호적인 참조가 무리 없이 가능합니다.

  • 5. Polygon은 문제 접근을 관리할 수 있습니다.

Polygon에 등록된 아무 계정에게나 자신의 문제를 공유할 수 있습니다. 이는 문제를 만드는 사람들끼리 협업할 수 있다는 뜻도 되며, 또 타인에게 문제를 내서 추가적인 피드백을 받을 수 있다는 뜻도 됩니다.

  • 6 . Polygon은 문제점을 올릴 수 있습니다.

흔히 Issue tracking이라 불리죠. 문제를 혼자 만들든, 같이 만들든 이는 매우 좋은 기능입니다. 서로의 문제점 및 버그를 지적할 수 있고, 진행 상항을 공표할 수도 있으며, 문제의 방향성을 유지하는데 공헌하기 때문입니다.

  • 7. Polygon은 Online Judge랑 쉽게 통합 가능합니다. 

2번이랑 일맥상통한데, Polygon의 Package는 기계가 읽고 처리할 수 있도록 짜여졌기 때문에 쉽게 Online Judge에 그 Package를 올리면 굳이 손으로 수많은 Test를 복붙할 필요가 없게 됩니다.

  • 8. Polygon이 없다면 복잡한 소프트웨어들이 필요합니다.

직접 우리의 컴퓨터에서 한다면 LaTeX로 작성된 Statement를 자동으로 파일로 출력해주는 프로그램, 여러 언어(C++, Java, Python 2&3 등......)들의 소스 코드를 받아서 실행 및 결과를 내놓는 프로그램이 필요하고, 이는 상당히 기술적인 부분을 요구하며 까다롭습니다.

  • 9. Polygon은 보다 안전합니다.

https를 쓰고, 그 외 복잡한 암호화를 쓰는 것 같습니다.

  • 10. Polygon은 문제들을 분류할 수 있습니다.

태그와 필터, 검색 등으로 500문제들 속에서 원하는 문제들을 쉽게 찾을 수 있습니다(라고 개발자님께서 말씀하시는군요).


아무튼 이러한 기능들을 가진 Polygon이고, 실제로 사용하다 보면 그 강력함에 놀라지 않을 수 없게 됩니다. 실제로 Codeforces에 올라가는 문제들도 다 이 Polygon으로 만들어집니다(Mashup Contest에 본인이 만든 Polygon 문제를 올릴 수 있는 모양이지만, 저는 잘 모르겠습니다). 다만 마음에 걸리는 점이 몇 가지 있습니다.

  • 1. 업데이트가 2011년에 멈췄다......는 아닙니다.

Polygon update log 2011년에 멈추어 있는 것이 사실이지만, 몇 달마다 약간의 개선은 가해지고 있습니다.

  • 2. 진입 장벽이 결코 낮지 않습니다.

일단 "testlib.h"라는, 이분이 직접 만드신 헤더 파일을 이용해서 코딩도 해야 하고, LaTeX html로 바꾸는 과정에서는 또 #begin{enumerate} #indent 같은, 비교적 간단한 구문도 사용하지 못하고, 어떤 파일을 먼저 만들어야 하는지 설명도 없고...... 아무튼 진입장벽이 낮다 할 수는 없습니다. Polygon 내의 도움말도 빈약하고요. 물론 기에서 더 자세한 도움을 받을 수 있긴 합니다.

  • 3. 그리고 영어......

Codeforces Contest를 해석할 정도면 충분하지만, 일단 영어입니다. .

 

실제로 도움말이 거의 없습니다. Google codeforces polygon 쳐도 딱히 유익한 정보가 많이 나오지도 않고요. 영어로도 거의 없는데, 한국어로는 더욱 더 없겠죠. 그래서 약간의 가이드라인이라도 될 수 있는 포스팅을 해보자는 것이 저의 목적입니다.

 

'Polygon' 카테고리의 다른 글

5. Files  (0) 2015.07.28
4. Statement  (0) 2015.07.28
3. General Info  (0) 2015.07.22
2. Make a problem & Commit Changes  (0) 2015.07.22
1. Register  (0) 2015.07.22
Posted by Evenharder
,