読者です 読者をやめる 読者になる 読者になる

ぱらつり記

No description

CodeRunner本選に参加したお話

競プロ C#

f:id:paralleltree:20141130222454j:plain 参加してきました。

結果はご覧のとおり72位。 f:id:paralleltree:20141130221345p:plain

本選の内容ですが、石がもらえるから高い得点のつけられたモンスター召喚して点数稼いでいこうねという感じのものです。 ここに、石の価値とそれに対して召喚できるモンスター、他の参加者との石の交換といった要素が絡んできました。

開始直後、本選の問題ページを見ようとしても同じページで無限ループを繰り返すというハプニングがありましたが、競技終了後は、chokudaiさんから

  • 序盤で石をガンガン使うと後半で身動きが取れなくなる
  • 'とりあえず'動かさない ⇔ 石を無駄遣いしない
  • トレードしつつ石を温存すると良い
  • 戦略立てが重要
  • 問題の本質を見抜く力が必要

とのお話がありました。

最初、出題された問題をかみ砕くのに時間がかかりましたが、
実際のところ、開始30分あたりで 「今持っている石で召喚できるモンスター」を得点の高い順にどんどん召喚 してみたところ、最高で11位まで上がりました。(順位グラフの前のほう)
後半はあれよあれよという間に降下しつづけていますねハイ。

その後は石の取引をするためのコードをのろのろ書いていましたが、今考えるとブラウザからポンポン叩いた方がよっぽどよかったのではと思います。

また、この取引っぽいことをしそうなコードを書いているうちに、ゲーム全体の事を考える時間が無くなってしまったとも思いました。

結局石がかなり余った状態で終わってしまい、悔しさがふつふつと。

予選Aは、文字列を考えつつ高得点が出せればよいという感じでしたが、 Bでは結果が累積されて得点となっていたため、とにかく叩かないといけないという印象を持っていました。

本選はどちらのタイプになるんだろうと思っていましたが、 焦ると詰むということには気づけず、ぐだぐだなまま終わりを迎えてしまいました。

というわけで、今回の反省点は

  • 焦りすぎ
    • 遅れへの恐怖
    • 緊張が抑えられずに冷静な考えができなかった
    • 問題をよく読み込めなかった
    • もっと広い視野を持とう
  • 自分で書いたコードの動作がつかめていない
    • デバッグに頼りすぎ
    • 方向性がはっきり決められていない
    • 自分が何を考えているのかその時々できちんと説明できるくらい理解しよう
      • ABC, ARCのようなものでデバッグせずともACできるくらいに

という感じで。

今回はC#LINQをガリガリ使いましたが、 Zipメソッドでシーケンスをマージしたり、Selectメソッドで匿名クラスを作って整理したりするときに ラムダ式に自分で与えたパラメータがよくわからないままごり押ししたのはやっぱりまずかったなあと思います。

偶然にも隣の席は今回優勝されたsnukeさんでした。 snukeさんの机を見て、

  • 小さめのmacを使っていた
    • かっこいい
  • ノートにメモをしていた
    • macが小さいから脇にノートを置く余裕がある

と感じました。
(ちなみに開始直後の本選問題のアドレスもsnukeさんから教えてもらった。)

やっぱりノートに考えを吐き出すというのは重要なんだと思いました。
(自分もノート持っていったけどロクに書いてなかった)

その後の懇親会では、開幕ぼっちをキメたものの、コミュ障なりに交流できたつもり。 スタッフさんに話しかけられたのがきっかけでスクウェア・エニックスの三宅さんとお話ができました。 大学などで研究するAIやゲームのAIの違いなどを知ることができて、これだけでもとても勉強になりました。 自分なりにまとめるとこんな感じ。

  • ゲームのAIはある程度のエンターテインメント性を持っている。
    • プレイヤーの敵ならギリギリで倒される。
    • プレイヤーの仲間ならプレイヤーを助ける。
    • かっこいいセリフを言わせる。     などなど
    • => すぐに結果を出すもの
  • 研究に使われるAIは「知能」としてのAI。
    • 人間の脳のようなさまざまな要素を含んだ処理を行う
    • => 長い時間をかけて結果を出すもの

聞くところによると、東大生が参加者の3割近くを占めていたとかいないとか。 確かに自分よりも年上の人ばかりでしたが、ぼちぼちお話できたのでよかったです。 †社交性†を上げていきたい。

来年、もしくはより早い時期に次回の開催があるかもしれないとのことだったので、 機会があればアルゴリズム力を磨いてまた挑戦したいです。

まずはグラフ問題解けるようになろうな。

というわけで明日から3日間残った試験がんばります。