危うく忘れるところでした。夏休み中にしようと思っていた事。
プログラミングの腕を競う場所、TopCoder への挑戦です。
といっても今は他にすることがあるので、簡単な過去問を1つ解いただけです。
Competition Arena にログインし、Practiceメニューから1番上にあった問題で
最も簡単な250点問題。
画面上半分が問題文、下半分(Coding Area)には書きかけのコードがあります。
サイバーなデザインが良いですね。
途中まではCoding Area に直接書き込んでましたが、
自動タブ機能もインテリセンスもデバッグ機能もないエディタだったので
結局Visual Studioで書いてからコピペしました。
デザインが良いのに勿体ない。
Visual Studio も背景を黒にしようかな・・・?
問題文をざっと和訳するとこんな感じ。
「TopCoderでは問題の難しさの判別を自動で行う事にしました。
問題文に出てくる単語の文字数の平均が3以下なら250点問題、
4または5なら500点問題、6以上なら1000点の問題です。
問題文を与えたら、それが何点の問題かを返答するプログラムを作ってください。」
単語内文字数が難易度ww なぜだかつっこみどころのある問題文ですが、
単に文字を数えれば良いというわけでもありません。
数字の含まれる単語はカウントしないとか、
ピリオドが単語の後ろに付いている場合はピリオド以外の文字部分を文字数に数えるが、
ピリオドが単語のまっただ中など不正な位置にあったりピリオドが2つ連続している場合は
そのピリオドを含む単語を単語としてカウントしないなど、
結構面倒な条件が付されています。
で、if文ごり押しで何とか解いたんですが、
2時間かかりましたよ。本番だったらタイムオーバーです。
とはいえ解けたという判定をもらえたから良しとしましょう。
250点中78.45点。減点要因はなんだろう。時間がかかった事?プログラムに欠陥があった?
実際に参加する時はそのへんも調べた上で、 もっと実力付けてからにしましょうかね。