2004-12-29

Single Round Match 255 at TopCoder



Single Round Match (SRM) Schedule at TopCoder


TopCoderのSingle Round Match 225(SRM)に初参戦。
問題はスコア別に,250点,500点,1000点と3個ある。制限時間は75分かな? で,実際に出た問題は次のようなもの。


250点
電子メールに付ける署名を生成するメソッドを作れというもの。名前と装飾文字と,どのように装飾文字を配置するかというコマンドを指定されて,そのとおりの署名文字列を返す。

500点
与えられた文字列の1部を別の与えられた文字列に置き換えるというもの。これが意外にはまった。

1000点
文字列のメッセージを画像データに見立てた数字の配列に埋め込むというもの。初歩的なステガノグラフィですね。


一応,コーディングが終わってサブミットしたのは250と500だけ。1000の問題は問題文を読んでる間に時間切れになってしまった。

SRMの進行は四つのフェーズに分かれている。


  • 1.Coding Phase
      問題が出されて,そのプログラムをコーディングする。このフェーズが終わったらプログラムは投稿できない。

  • 2.Intermission
      システム側の準備時間。ちょっと休憩といったとこかな。

  • 3.Challenge Phase
      ここが一番きびしいところ。別の参加者のコードを読んでバグがありそうなものを見つける。人のコードをテストして,実際にエラーが発生したらその問題のスコアを0にされちゃう。ただしエラーが発生しなかったらテストをした人のほうが減点されるという諸刃の刃。

  • 4.System Test Phase
      システム側が参加者のプログラムをテストするフェーズ。ここで間違いが判明したら,その問題のスコアは0になる。

チャレンジフェーズで500点の問題を落とされました(泣。

今回のSRMでRatingが997になりました。Ratingは大きいほど良いみたいだけど,どうやって決まるのか不明。

次のSRMは1月5日6:00AM(日本時間で1月5日23:00)。さて次はチャレンジで落とされないようにがんばるぞ!



2004-12-27

TopCoder

TopCoder

最近,TopCoderというサイトで遊んでます。TopCoderはオンラインでプログラミングコンテストを開催するサービスを提供しているサイト。Googleが開催したプログラミングコンテストの"Google Code Jam"もここでやってた。

TopCoder で使用できる言語は,Java,C++,C#,VB.NETの4言語。コンテスト参加者は専用のJavaアプリ "CompetitionArena"を使ってコードを投稿する。このソフトが良く出来ていて,ちょっとしたテストファースト開発環境になっている。

プログラムの問題は,パズル的なものが多い。C MAGAZINEの巻末にあるみたいなの。問題文が英語なのがつらいよー。

ここの記事によると,近いうちにPerlも使用言語に追加されるかもしれないとのこと。これが本当になったら,そのうち同じスクリプト言語としてGroovyも追加されないかな。

ここでは定期的に競技会が開かれてる。次回は日本時間で12月29日AM10:00から。参加登録はその前に済ます必要あり。久しぶりに参加しようっと。



ここの練習問題をやってたら,いつの間にかクリスマスが終わってました(泣

2004-12-23

Groovy Beta 8 is released - Confluence

Groovy Beta 8 is released - Confluence

いつのまにやらBeta8がリリース。
主な改良点としては

・エラーメッセージが明瞭に(重要)
・JDK5.0に対応

ってとこですか。


まだ試してないけど,エラーメッセージが分かりやすくなるってのは重要。
Groovyに慣れないうちにスタックトレースなんか長々と出されても分かんないもんね。

2004-12-02

Groovy



Javaをベースにした新しいスクリプト言語Groovyが発表された。
ちょっと触ってみたところ,GroovyはPerl+Javaって感じな面白い言語。
これから遊ぼうっと。

関連リンク
Groovy - Home
Groovy公式サイト
Groovyのダウンロードページ
現在の最新版はVer1.0 beta 7
Groovyに触ってみよう
@ITの解説記事
Groovy - Java用スクリプト言語
海外雑誌のGroovy解説記事の翻訳

サーバサイドJava

Java言語をやり始めてから4年になる。
当時発表されたばかりのNTT Docomo携帯で動くiアプリを作りたかったからだ。
iアプリのほかにAI型のオセロゲームなんかも作っていた。
なのでクライアントサイドで動くJavaについてはまぁまぁ知っている。

しかしサーバサイドで動くJava(JSP,サーブレット,EJB)などについてはほとんど知らない。
エンタープライズ向けのシステムでは,サーバサイドJavaが主役だ。
Webアプリなんかも作ってみたい。
ということでサーバサイドJavaについて勉強することにした。


基礎からわかるサーバー・サイドJava―Javaサーブレット、JSP、JavaBeans、EJBによるWebアプリケーション開発

上記の本はいろいろ調べてみた中で一番バランスが良いかなーと思う。
専門的になりすぎず,実践的でサーバサイドJavaのメカニズムも分かる。
普通のJavaプログラムから出発して,JSP,サーブレット,EJBと段階的にプログラムを発展させていくので分かりやすい。

これから上記の本(略して"基礎サジャ")で学んだ内容をまとめていく予定。