[Sy] Topcoder SRM 722 に参加!ケアレスミスと Python の理解不足で残念な結果・・・
先月の Topcoder SRM721 につづいて、 SRM722 に参加しました。一応 Division2 の 3問すべて解いたんですが、一番簡単な問題でケアレスミスをしてしまいました。もったいない・・・
前回(初参加)のときの記事はこちら。 Rating は Green の 1083 でした。
⇒ [Sy] Topcoder SRM に初参加してハマったこと&感想2回目の挑戦ということで
今回はこんな感じで挑みました。
- Division 1 に入れる Blue を目指す!
- 問題を解く順番は 「(難易度)中」 ⇒ 「低」 ⇒ 「高」 の順でいく。(中と低の両方を解く時間あるか微妙なので得点の高い方から。高は残り時間があれば)
そして結果は・・・
一言で言うと、残念な結果に!!
時間配分は申し分なく(前回よりも難易度が低めだったような気がします)、70分で3問解くわけですが、
20分時点:難易度中 完了!
35分時点:難易度低 完了!
60分時点:難易度高 完了!(しかし提出したのはぎりぎり69分ごろ。理由はこのあと書きます)
と、 時間内に全部解くことができました!ただ、問題はここからでした。
※解くのに必死だったので時間はなんとなくです。
1問目はケアレスミスでバグ発見される
問題を解いたあと(コーディングフェーズ)少し休憩をはさんで、他の人のバグを発見する時間(チャレンジフェーズ)があるんですが、1問目の他の人のコードを見ていて、自分のミスに気づきました・・・。やってしまいました。
前回は慎重になりすぎたのでささっと解いたら今度はミスってしまうという残念なことに。
3問目はPythonのceilの仕様で戸惑う
3問目は、小数点以下を切り上げる必要があったのですが、ぼくはまず ローカルにある Python3の環境で軽くコード書いて試して、みたいにしてた んですね。
で、ローカルの環境では math.ceil()
でちゃんと期待通りの結果が出るのに、どうも Topcoder のエディタでテストすると切り上げがうまくいかない(コンパイルも処理も通ることは通る)というよくわからないことに。
Topcoder の環境は Python2 なので、その違いによるものだったのかな?気になったのは、他の参加者で Python 使ってる人は、 math.ceil()
を使ってなかったんですよねー。
もうちょっとちゃんと Python 使えるようにならないといけないですね。
↓ システムテストでエラーになりました・・・
※2017/11/19追記
Python2.7の環境をローカルにつくって確認したら、math.ceil()
の引数に整数値を渡してたのがマズかったです。1.0
を最初にかけてあげて、float にしてから渡すと正しい結果が出ました。
ひとこと
ということで、結果ポイントがもらえたのは難易度中の1問のみでした・・・
Rating がまだ更新されてないので、更新されたら追記します。