初チャレンジ
TopCoder(http://www.topcoder.com)をちょこっと試してみた。
TopCoderについては下のITmediaの記事が詳しいかも。
http://www.itmedia.co.jp/enterprise/articles/0703/01/news013.html
まだ他の人と戦う自信はないので、とりあえずAlgorithmの練習問題の中から2つだけ。問題では作るプログラムの内容と、クラス名・メソッドの形式が指定されている。まだそんなに難しくないね。ただC++は慣れてないので、変な書き方になってるかも。
SRM144 Div2 200
与えられた秒を"H:M:S"形式の文字列にして返す。
#include <string> #include <sstream> using namespace std; class Time { public: string whatTime(int seconds) { int hour = seconds / 3600; int second = seconds - 3600 * hour; int minute = second / 60; second -= 60 * minute; ostringstream oss; oss << hour << ":" << minute << ":" << second; return oss.str(); } };
SRM145 Div2 250
文字の出現回数を調べる("AB", { "ABC", "CDE", "ABA" } -> 5)
#include <vector> #include <string> using namespace std; class ImageDithering { public: int count(string dithered, vector<string> screen) { int sum = 0; for (int i = 0; i < screen.size(); i++) { for (int j = 0; j < dithered.length(); j++) { for (int k = 0; k < screen[i].length(); k++) { if (dithered.at(j) == screen[i].at(k)) sum++; } } } return sum; } };
プログラムはTopCoderのツール(java製)上で書いて、そのままコンパイル・テストができる。すごいなー。でもツール上のエディタはちょっと使いづらいな…。プラグインを入れて、自分の好きなエディタを選択できるっぽいので、今度試してみよう。
こういうクイズっぽいのは好きだなぁ。昔、Python Challengeをやってたことがあったけど、あれもかなり面白かった。PILで画像をいじったりしないと先に進めないんだよね。TopCoderではそういう問題はなさそうな気がするけど、難易度はこっちの方がずっと高いんだろうなぁ。計算機科学の勉強にもなりそうだし、毎日少しずつ解いていこう!