1566問もあるACM問題集に昨年11月末頃からチャレンジし、やっと50位ランキング入りを果たした。目標は今年にトップ10入りことだが、いまの進行ペースで考えると、その目標は通過点でしかないだろう。できればナンバー1になりたいが、無理だと思う。ほとんどの問題がその人に解けられたから。

ACMとはAssociation for Computing Machinery、情報工学に関するさまざまな情報交換を推進し、標準の普及等を通じて、情報工学の技術的、応用面での進歩発展をはかることを目的とした国際的な科学・教育組織のこと。現在会員は約80,000人。情報技術に関心を持つ実務者、開発者、研究者、教育者、管理者等から構成されている。日本では情報処理学会が有名だが、世界的にはACMだろう。

その手の問題集アーカイブサイトは世界中にあちこちあることだが、最強サイトは勿論そこ。英語が問題だと思うのだが、日本には残念ながらこの手のサイトは見当たらない。

ランキング表をみてビックリしたのがバングラデッシュという国の活躍。日本では全く知られない国だが、実力では世界有数のソフト大国なのかもしれない。一方、インドの方々の活躍は全くみられない。実情は果たしてどうだろう。

問題を解くことでどんなメリットがあるか、というと、まずは英語の勉強にはなる。問題の表現には最小限の英語しか使わず、図表入りの優しい説明にもなっていない。英語の微妙な言い回し等、自分の好きなプログラム作成を通して、勉強できるならばそれ以上のことはないだろう。

プログラミングやアルゴリズムのエッセンスも習得できる。大学に行かなくても、200問を自力で解けば、情報工学科とかは十分卒業できる実力が身につくはず。(日本の某情報系の大学教授も200問ぐらいしか解けなかった。それが世界の実力かもしれない。)そこにある問題はほとんどが世界各地で開催されたプログラミングコンテストで使われていたものなので、レベルは世界一。最先端のアルゴリズム研究も問題を解くことで問題意識やヒントとなるものは得られるだろう。

問題を解く環境は、Linuxを一台用意することだ。中古のPCでも構わない。LinuxにはGCC(
グニュC コンパイラ)が入ってるので、サーバと同じ実行環境になり、心強い。あとはネットに繋ぎ、サーバに登録。それだけ。

残りは気合と粘り精神。一日一問でも構わない。つねに考えることが大事。どうしても判らなければ、掲示板 http://online-judge.uva.es/board/index.php を利用するのもいいだろう。沢山解くよりも、一問一問完全に理解することを目標にしよう。解けたら、もっと速くするにはどうすればいいか、違う解き方はないか、を考えてみるのも悪くない。

本人の場合は、気合というよりもただ好き、それだけのことだ。飯よりもプログラムをつくるのは好きということ。アルゴリズムに魔法が存在する。今までに解けなかった問題、あっという間に解いてしまう技法、マジックというのはそういうものだろう。それを探求するのが楽しみなのだ。未解決の問題はまだ800問もあるので、まだまだ楽しめる。

Comments are closed.

Post Navigation