대안언어축제에서 인기있었던 코너를 분리해서 새로운 행사로 만든 코드레이스를 했습니다. 이번에는 준비기간도 짧고, 학기중이라 자봉분들과 자주 만나지도 못하고 후다다닥해서 막 정신이 없었네요.. 리허설때도 여러가지 했어야 했는데, 학교 시험하고 겹쳐서 당일날 가서야 삽질을.. ㅠ.ㅠ
이번 대회에서는 참가자들의 프로그램에 대한 acceptance test를 계속해서 자동으로 채점을 해야했기 때문에, 자동채점 프로그램과 그를 공시하는 점수판 프로그램이 중요했습니다. 그런데, 그 전까지 특별히 제대로 돌아가는지 테스트도 못해보고 당일 아침에 별의 별 희한한 에러를 다 만나가며 수정하느라 좀 전반부 거의 대부분의 시간을 제대로 진행하지 못한 문제가 있었습니다. 대회가 진행되는 trac과 svn, 해설용 vnc 접속, 점수판, 채점들도 모두 같은 노트북에 세팅했었는데, trac과 점수판이 받아들이는 요청이 엄청나서 로그가 막 우루루루루 올라가는 판에 vncviewer 12개가 떠 있으니까.. 노트북이 로드가 80까지 올라가서 계속 멈추는 바람에 또 난감해하고.. 하여간 여러모로 해설을 할 수 있을 만한 맥락이 조성이 안 돼서 그 부분에 대해서는 정말 아쉬움이 남습니다. 그래서 이 부분에 대해서 다음부터는 해설자는 해설만 계속 하고, 옵저버와 trac/svn/스코어보드 유지를 담당하는 기술적인 자봉을 따로 둬서 해결하는 것으로 뒷풀이 때 의견이 모아졌습니다.
이번 행사에는 C++팀이 4군데, C#팀이 1군데, Python팀이 2군데, Ruby팀이 2군데, Java팀이 2군데 해서 모두 12팀이 참가를 했습니다. 생각보다 C++의 비율이 엄청 높았는데, 처음 기획 때는 동적 언어들이 너무 유리하지 않을까 해서 무척 고심을 해서 동적 언어들이 너무 유리하지 않은 방향으로 가도록 초기 문제를 조정했었습니다. 그 영향인지 동적 언어를 쓰는 팀들이 속도가 C++에 비해서 크게 나지 않았던 것이 약간 아쉽지만, 적당히 평형을 유지했던 것 같습니다. 🙂 초반기에는 중앙대 동아리에서 단체로 출전한 “밥묵자”라는 팀이 C++로 굉장한 리드를 했었는데, 이 팀에서는 다른 여러 프로그래밍 대회의 경험이 많아서 그런지, 경진대회에 적합한 코드를 빨리 만드는 것을 잘했습니다. 그런데, 후기에 타입이 여러가지로 늘어나거나 evaluation 규칙이 바뀌는 등의 기존의 디자인을 벗어나는 요구사항들이 나오기 시작하자, 역시 경진대회를 많이 연습한 팀인 연대의 “액션가면사주세요”가 엄청나게 유연한 C++ 코드를 무기로 계속 만점가도를 달려서 결국 우승하게 되었습니다.
김형용님께서 찍으신 사진입니다.
기획하던 단계에서의 생각은, 아무래도 요구사항이 많이 바뀌는데다가, 알고리즘이 크게 어려운 것이 필요한 문제가 없고 거의 디자인 문제였기 때문에 경진대회 준비팀들이라고 특별히 유리할 것은 없다고 생각했었습니다. 그런데 아무래도 문제를 빨리빨리 풀고, 발생하는 난관들을 잽싸게 해결하는 부분에서 경진대회팀들이 많이 익숙해 있어서 유리하지 않았나 싶네요. 2위를 한 “Effect”팀은 독특하게도 C#으로 출전하셨는데, MonoDevelop을 굉장히 익숙하게 다루시는 모습이 아주 인상적이었습니다. 1위가 C++이고 2위가 C#이라니 정말 충격이지요.. -O-;
다른 팀들도 다들 잘 해주셨는데, 문제 출제에서 약간 문제가 있어서 초기에 너무 요구사항들이 한꺼번에 나가서 상당히 혼란스러웠음에도 불구하고 금방 적응하고 빨리빨리 해결하고 그러셔서 적지않이 놀랐습니다. 역시 코딩 고수이 이렇게 많구나!
이제, 코드레이스 준비는 다 끝났으니(-O-;;;;), 본격적으로 다음엔 재미있는 코드레이스가 될 수 있을 것 같습니다. 좀 더 좋은 코드레이스를 위해 창준형이 말한 두가지가 집에 오는 길에 계속 생각이 났습니다. 아직 마땅한 좋은 생각은 없지만~ 계속 생각해 봐서 2회는 더욱 좋은 대회로.. 🙂
- 1,2위 팀 뿐만 아니라 모두가 집에 가면서 나도 이겼다 하는 생각을 갖고 돌아갈 수 있게 하는 방법은 없을까
- 축구나 야구처럼 선수들이 재미있기 보다는 관객들이 즐길 수 있고 배울 수 있는 흥미로운 대회를 만들 수는 없을까
몇가지 대회 자료입니다. (여기 있는 것 외의 trac 안의 데이터 등은 곧 소프트웨어진흥원 홈페이지에 공개될 예정입니다.)
- 참가자 소스 저장고 (svn co 명령으로 접근 가능합니다.)
- 요구사항 세트
- 팀 좌석 배치도 및 팀원 명단
- 점수판 프로그램 소스
- 채점 프로그램 소스
- 최종 채점표
- 최종 순위별 점수판
물론 채점 프로그램과 점수판 프로그램은 zlib/libpng 라이선스을 적용하여 다른 곳에 사용하실 수 있습니다.