11月5日に、インターネット上で“ACM
国際大学対抗プログラミングコンテスト”の国内予選が行なわれた。
ACM
国際大学対抗プログラミングコンテストは、米国に本部を置く国際計算機学会(Association
for Computing Machinery)が主催する、大学生のための(高等専門学校4、5年生も含む)コンテストだ。今回で24回目になる、このコンテストは、問題を解決する技能やコンピューティングの技能を競い、さらにプログラミング技能を磨いていくチャンスを大学生に提供する目的で開催されている。コンテストは世界の各地で地区予選を行ない、その勝利チームのみが世界大会(決勝)に参加できる。
日本からの参加状況は、'97年のアジア地区予選台北大会に京都大学1チームと早稲田大2チームが参加したのが最初。このとき3チーム中で最も成績の良かった京都大学チームが、特別枠で世界大会の出場権を獲得している。
翌年'98年10月に初めて日本でアジア地区予選が、早稲田大学にて開催され、京都大学1チームと早稲田大学1チームが世界大会の出場権を獲得。'99年4月の世界大会で京大チームが、62チーム中18位と大健闘している。
日本が参加を始めて3回目の国際大学対抗プログラミングコンテストの季節がやってきた。今年の日本の場合、国際大学対抗プログラミングコンテストに参加するためには、国内予選、アジア地区予選京都大会を突破して初めて決勝大会に参加できる。それぞれのどういったものかを簡単に説明しよう。
◆国内予選
国内予選はアジア地区予選に先立って日本国内で行なわれる。この国内予選はインターネット上で行なわれ、出場チームは各大学で複数が参加できる。次のアジア地区予選京都大会への参加資格は、国内予選で優秀な成績を収めた上位20チームに与えられる。また、国内予選の成績上位チームから選抜されたチームは他国で開催されるアジア地区予選に招待される。◆アジア地区予選京都大会
12月3、4日に、京都リサーチパークにて開催されるこの大会には、日本を含むアジア地域の大学生が参加対象となり、国内予選を勝ち抜いた日本の大学チームとアジア各国からのチームが参加する。このアジア地区京都大会で優勝したチームは、決勝大会に招待される資格を獲得できる。また、アジア地区予選は京都大会のほかに、テヘラン(イラン)、ダッカ(バングラデシュ)、上海(中華人民共和国)、カンプール(インド)、台北(台湾)でも開催される。
◆決勝大会
2000年3月15~19日に、アメリカのフロリダ州オーランドで開催される世界大会には、6大陸で行なわれる地区予選で選ばれた60チームが参加できる。今年の地区予選に参加するチームは、1900チームを超える数になることから、地区予選に参加できたとしても競争率は約32倍と難関だ。国内予選では、参加チームすべてを1つの会場に集める形態はとらず、参加するチームのある大学で開催する。国内予選はインターネットを使って実施し、出場チームは、ウェブから問題を入手して、その解答をメールで審判団に送る方法で行なわれた。
このコンテストの参加資格は、同一大学の3人(以内)1組のチームで、全員が同一大学に所属する学部生であることが条件。ただし、1名のみは同一大学大学院の修士課程在学生(過去に修士の資格を得ていないもの)であってもかまわない。
各参加チームは、インターネットに接続されたコンピューターを1台のみ使用し、ディスプレー、キーボードなども1台だけに制限されて行なわれる。基本的にウェブブラウザーと電子メールが利用可能であれば何を使ってもかまわないが、コンピュータの機種やOS、プログラミングに用いる言語(C++、C、Javaから選択)を、国内予選の前日までに審判団に報告しておく必要がある
この参加条件の下で、国内参加チームは71チームあり、アジア地区予選京都大会へ参加できる日本のチームは20。今回、国内予選の中で10チームが参加した京都大学の予選会場で取材した。京都大学から参加した10チームの多くは工学部情報工学科の学生だが、他の学部の学生も参加しており、1回生だけで構成したチームもあった。昨年、京都大学のチームがアジア予選を突破し、オランダで行なわれた決勝に参加しているだけあって京都大学内での熾烈な競争が予想された。
問題はWWWで入手しメールで解答する
コンテストは16時になると同時にウェブで公開され、競技が開始された。コンテストの開始を知らせるホイッスルやアナウンスがあるわけではない。開始時間が近づくとウェブブラウザーの再読み込みボタンを頻繁にクリックして競技開始を待つ、自動車レースで言う“ローリングスタート”方式になっている。公開される問題文は英語で記述されており、全5問を制限時間は3時間30分で行なわれた。
・出題された問題
京都大学の予選風景 |
コンテストの開始と同時に公開された問題文をウェブ上で確認し、各チームでプログラムと実行結果(解答)を求めるべくチームの3人で協力しながら取り組むのだが、コンテスト時間中は自分のチームのメンバーおよび監督者以外の人との会話を禁止されているため、会場は大学の理工系実験室のような静かな雰囲気で進んでいく。
禁止されている事項は、会話だけではない。競技者は、本、マニュアル、プログラムリストなどの資料持ち込みと電子自然言語翻訳機やオンライン辞書の使用が認められているだけで、既存のファイルをコピーしてプログラムを作成することやプログラムやデータの持ち込みは禁止されている。もちろん、ftpやウェブ、電子メールを利用して、プログラムまたはその一部を外部から入手することも禁止されており、不公平がないように審判員が常に監視している。
◆費やされた時間の計算例 問題Aを解答するためだけに費やした時間 20分 問題Bを解答するためだけに費やした時間 30分 問題Cを解答するためだけに費やした時間 40分 総所要時間は 20+(20+30)+(20+30+40)=160(分) ここでポイントとなるのが、5題出題される問題の中で簡単な問題から解いていくことが大切ということだ。もし、上記の例と同じように問題A~Cを解答する時間がかかったとして、解答した順番を問題C→B→Aとした場合は 40+(40+30)+(40+30+20)=200(分) となり、各問題に費やした時間が同じであっても解答順が違うだけで40分もの差が発生してしまう。 また、解答が間違っていた場合は、20分のペナルティー時間が加算されるが、解けなかった問題に対して時間(ペナルティー時間を含む)が加算されることはないため、速さと正確さが要求される。 |
国内予選の時間中、各チームが解いた問題数と問題を解くに当たってかかった時間(秒)に関する情報をウェブで5分ごとに公開していた。
最終的な順位は、コンテスト終了後にプログラムの事後検査の作業を受けたあと確定された。結果は、7位までに京都大学のチームが5チームも入り、1位の“abacus”は、国内予選参加チーム唯一の全問正解という好成績。71チームのうち、5問全問正解が京都大学の1チーム。4問正解のチームが、京都大学、金沢工業大学、東京大学の各1チームずつ。このことからも京都大学のレベルの高さはわかっていただけるだろう。海外派遣チームを含め京都大学からは4チームがアジア予選大会に駒を進めた。アジア地区予での活躍に期待したい。
◆地区予選進出チーム
海外派遣チーム上海:京都大学 abacus
京都大学 abacusチーム。(写真左から藤田 憲正君、山田 聡君、住吉 貴志君) |
台北:京都大学 NewWillowField
京都大学 NewWillowFieldチーム。(写真左から新 康隆君、柳沢 弘揮君、荻野 哲夫君) |
京都大会進出チーム
金沢工業大学 Kinkoudai-A
東京大学 Shutdown
京都大学 tekitou
京都大学 FM-TOWNS
福井大学 Fukui-univ
東京大学 Tokyo_Beers
早稲田大学 Waseda
会津大学 CC-HECHIMA
専修大学 Hail_Mary
岐阜高専 GifuKosen
専修大学 Marimo
東京工業大学 oratorio
立命館大学 RitsRCC
早稲田大学 20Mpowers
京都工芸繊維大学 AT&&T[ARK]
神戸大学 chagall
豊田高専 Riverside_Yahagi
筑波大学 GAMA
山形大学 AMsoft
静岡理工科大学 3C-2