CODE FESTIVAL 2016 参加記

予選

Aで通った.さすがに予選は余裕.

3日前~1日前

研究会での発表で神戸に行って,ついでに姫路城を観光してきた.
その後だったので忙しいと思った.

1日目

新橋からベルサール汐留まで歩いて10分位.

今年もコミュ障不動の構えをやっていたのでコンテストまで暇だった.

海外勢も来ていて英語のアナウンスがあったりして,グローバル感があった.

コンテスト

ABはやった.
Cはちょっと難しい.出力を間違えてWA.ペナルティはないのでどうでもいい.
Dはなぜか半分くらい通らなくて激ヤバ.飛ばしてEへ行く.
Eは部分点が調和級数でNlogNになるタイプのDPだったので取った.
満点は難しそうだったのでFへ.
Fは数え上げだったがかなりスムーズに解けた.コンテスト中一番のファインプレー?だったと思う.
Gは苦手そうだし部分点がないからパス.
Hは部分点だけ取るつもりが誤読で時間がかかった.RMQをStarrySky木にして部分点.
Dを通してないのがさすがにおかしくて,いや合ってるだろうと思ったところを丁寧に書き直したらACしては~~~~~~~~~となった.
おしまい.
35位,日本枠17位.
これはかなり良くて,全体順位で言っても1年目(44),2年目(53)より良い成績だった.
Dでハマらなければ1時間弱増えたかもしれないが他に解ける問題があったかは微妙だ.
I,Jは読んですらいない.

コンテンツ

tourist公演.たまに簡単な文や単語が聞き取れるくらいだったので通訳があって助かった.
飛行機で飛び回ってるという話でめっちゃ忙しそうだと思った.

今年はバッジ集めとかスタンプラリーがないのでのんびりした.

今年の夕飯は良かった.早めに行ったので寿司が食べられた.

Ponanzaの山本さんの公演を聞いた.
これは是非CODE VSに活かしたい.

続いて秋葉さんの公演,ペアプロを見た.
あのつくば大会の問題は面白かった.その時の記事に比が奇数:偶数なら勝ちと書いた気がするけど,2で割り続けて奇数:偶数なら勝ちだったようなので間違っていたかもしれない.

エキシビションはチーム戦なのに0完が2組出て見ててつらそうだった.

今年はホテルまで自力で歩くようでちょっとビックリした.Google Mapに助けられた.
銀座国際ホテルだった.

ホテルは鍵の開け方が分からなくて,他の参加者と開かねえなってやったあとまた別の人に助けられた.
ユニットバスがちょっと広い所が良かった他は普通?

コンビニで牛丼とSpriteを買ってダラダラtwitter見て優勝した.

2日目

十分な睡眠時間が確保できた.
ホテルから会場までは10分くらい.送迎のバスがない分むしろ去年より余裕があったかもしれない.

トーナメント

ラウンド1.Aは苦手そうでパス.
B問題の普通のDPを多倍長👊したら600点が帰ってきて通過出来た.
O(N^3)だと思ったので600点まで取れるとは思っていなかった.
Aは残りの時間で書いたけど最小の部分点さえ取れなかった.

ラウンド2.Aはすれ違う場合がどうなるのか不明で,自明な200点を取った.
Bも読んだけど難しそうで,もしかしたら400点対決になると思って400点を取りに行った.
B200点を提出している間により大きいケースを解く方法を考えていたが嘘しか思いつかなかった.
Bの部分点が落ちていてビックリした.逆転ができそうになく終了.
Aは終わった後よく考えると,ランダムに移動する方は止まる動きをしないので最初に調整して右に動くだけだった.それなら簡単だった.

ラウンド3.オープンコンテストになったので勝ちに行く方より満点を目指した.
AはNKlogNのDPが思いついて書いた.どうも間に合わなくてlogを削る必要があったが分からなかった.
Bは時間も無かったし部分点を取って終了.
Aはスライド最小値を使えばlogを削れると知ったのでスライド最小値をライブラリ化した.まだ原理は分かってない.

コンテンツ

まい泉の豚ロースカツ弁当?がおいしかった.

あとはトーク系を聞いていた.

リレー

B(Um_nik)チームでやった.
最初は日本人ペアで5問潰すという作戦でやった.
僕のペアはEを担当した.gcdを取ってゴニョる問題だと分かったが,2人ともgcdを空で書けないのでhogloidさんに教えてもらった.
Iを読むが全然わからない.奇素数は解けるなあとか考察してたけどそもそも奇数で解けるらしくこの問題僕は向いて無いなと思った.
Kは問題の意味が分からなかった.
Jが手を付けられそうな雰囲気があった.黒に変えられる白は全体の1/3くらいということと,hogloidさんのヒントから,一つ黒を置く毎に黒の連結成分を3つ減らせばよさそうということが分かった.
すると3列ごとにタテに真っ黒にして,ヨコに適当に真っ黒にするとよさそうなことが分かり,自分が実装する流れになった.
実装を詰めずに書き始めたらかなりバグらせた.(黒い所を塗る,同じところを2回塗るetc...)
助けてアピールをしながらsubmitデバッグをしてた.
一番右の列を埋めたほうがいいよというアドバイスを貰って,実装してN=1000を試したら足りたので投げてAC.

全体の感想

良問がガンガン消費されてヤバイと思った(特にトーナメント)

ACM-ICPC 2016 アジアバンコク大会 参加記 (タイ旅行記)

f:id:piroz95:20161117120607j:plain
つくば大会で悔しい思いをしたのもあり、なんやかんやタイに行くことになって、行きました。

チームpoは僕piroz,yosupo,dnkとコーチのhadroriで行きました。
バンコク大会に参加するにあたって特にコーチのhadroriさんや東工大の関係者には色々助けていただきました。
本当にありがとうございました。

結果は3位で、20000バーツの賞金をもらいました。
https://www.acm-icpc.eng.chula.ac.th/2016/asia/bangkok/scoreboard
残念ながら、ファイナル進出はダメそうです。

大会の写真などはfacebookにたくさんあります。
セキュリティチェックが必要です
セキュリティチェックが必要です


以下もう雑に参加記

コンテスト色々

ICPCはチュラロンコン大学で行われた。日本で例えるなら東大である。
海外からの参加者は参加費が6000バーツの参加費が必要になっていたが、その分(?)待遇はとても良かった。
日本のチームにはチュラロンコン大学で日本語を専攻している学生たちがガイドとしてついていて心強かった。
他の海外オンサイトの経験がないからなんとも言えないけど割と快適だと思う。

コンテスト本番

全体ではこんな感じになっていた。

解法 実装
yosupo 6 1
dnk 3 6
piroz 0 2

(修正しました)
チームメイトがめちゃくちゃ強くて僕は😇。
yosupoの解法生成の速さとdnkの実装力がとにかくすごい。

最初に12問を3分割して一人が4問読むようにした。
タイの特徴として最後の問題ともう1問が簡単になっているというのがあって、実装の速いdnkが最後の4問を読んでいたと思う。
僕はA-Dを読んだ。Aが難しそうでBがDPっぽくてまあマシ、Cが「は?」でDが幾何の構成っぽくて嫌だなあという感じだった。
Bを考察して解けそうな気分になったけど計算量がダメで、yosupoが考えた方が速そうなので投げた。
G(多分)の解法をもらって、フィボナッチ数の{0, K, 2K, \dots, NK}項目の和を求める問題だったんだけど、このタイプの式の計算方法を覚えていなかったのと、2次元配列で愚直な実装をするとJavaだと計算時間が結構ヤバいという事情があって、dnkに解いてもらった。ちょっと申し訳ない。
Bの解法をもらって、実装したら結構バグらせた(4WA)。つらい。
まず複数テストケースをある値についてまとめるという処理をミスって計算時間がおかしくなったり、DPから解を復元する部分をちゃんと理解していなくてヤバかった。
yosupoにめっちゃ助けてもらった。
まだ読まれていない問題を読んで(Hだっけ)「は?」となった。タイは問題文が読みにくいのが多い(今年はマシらしいが)。
その間にDの解法をyosupoから貰って、実装した。つくばのthin polygon(うろ覚え)と本質は同じで、2点が与えられるのであと1点を足して面積が0.5の三角形を作る問題。{|ax-by|=1}となるような点を探す。
最初Stern-Brocot木を実装して実は計算時間がやばくて1WA。extgcdにしたらなんとか解けた。extgcdのライブラリを持ってくるのを忘れたのでyosupoのを見た。
この後は問題を読んで分からん~~とずっとなるフェーズだった。
Cが解が大きくなる問題と聞いてJava得か?となったがint128で足りるじゃんと言ってしまいyosupoが実装した。
最後はyosupoのKが通るように祈ってた。

4問解法聞いて2問しか実装してないの、要精進と反省。

バンコク

飛行機に6時間くらい乗ると移動できる。
北半球で冬のはずなのに夏のように暑い。湿度は日本の夏より高い。

プミポン国王が亡くなって服喪期間中に訪れることになった。
タイの人々は全身の半分以上は黒を着ていたと思う。派手な色の服を着ている人は外国人っぽかった。
コンテストも風船が全部白、FAは黒で、ひもの色だけが異なるという仕様だった(わからない)

メシ。
f:id:piroz95:20161117123107j:plain
これは焼きそばに近い?油と塩の均一な味がした。50バーツ。1バーツ3円なので150円くらい。
飯屋の机には大体ナンプラーと砂糖と唐辛子が置いてある。これはナンプラーをかけるとおいしかった。
ホテルの朝食とか表彰式のホテルのご飯とかは特にハズレなくおいしいと思った。
辛いものが多めなので苦手な人は注意する必要がありそう。

Bangkok Centre Hotelに泊まった。
高くも激安でもないくらいのホテルで、水回りが結構ボロくてギリギリ感がある。
ホテルからの眺めはこんな感じ。
f:id:piroz95:20161117123435j:plain

ホテルの隣のマッサージ店は400バーツで1時間マッサージが受けられて普通に良かった。

アユタヤ

f:id:piroz95:20161117124138j:plain
エクスカーションで行った。全然調べてなくて、ガイドの説明もよく聞き取れなかったのであまりよく分かってなかった😇
昔の都でミャンマーの軍に破壊された(ザックリ)
廃墟感がいかにも遺跡という感じでいいと思う。

鶏。
f:id:piroz95:20161117124704j:plain

騙された話

アユタヤから帰って来た日の夜、賞金ももらったことだし有名店にでも行くか~という流れになった。
で、バンコクセンターホテル前のトゥクトゥクに乗った。(これが悪名高いことは帰国後に知った)
到着後すぐには僕は気づかなかったが、言った場所と違う店名がわからない謎のレストランに来た。(ヤバい)
Market Price(激ヤバ)の蟹カレーを4人で1つ頼んだ。店員の説明だと1200バーツだったがこれが2000バーツに化けた。
f:id:piroz95:20161117125848j:plain
(食べかけでゴメン)
ちなみに表彰式のホテルの飯の次くらいにおいしかった。

騙された外国人たちが次々とタクシーやトゥクトゥクで運び込まれてくるのがいい話感が高かった。

タクシーの行き先には気をつけよう!

CODE VS for STUDENT 予選7位!

総合7位,学生5位で予選通過しました!

f:id:piroz95:20161117104100p:plain

予選を通過できて本当によかった・・・
CODE VS 5.0の時から勉強した成果が発揮できたと思います。

CODE VS for STUDENT(公式サイト)は落ちものパズルのAIを作るコンテストです。
実際の試合はこんな感じです。
youtu.be
タテ・ヨコ・ナナメに連続するブロックの数字の和が10になると消えるというルールです。
お邪魔の個数は{ 1.3^{連鎖数}}に比例するので、長い連鎖を素早く組むのが最初のポイントです。

決勝は、12月10日(土)にチームラボ本社で行われます。
今年も配信予定でchokudaiさんやきゃんちさんが来るそうですよ!

12月5日に決勝AI提出なのでそれまでまた頑張ります👊

ACM-ICPC 2016 アジアつくば大会 参加記

f:id:piroz95:20161017013453p:plain
6完12位でした. 順位表

国内予選のときのブログはこれ↓
ACM-ICPC 2016 国内予選 参加記 - ぴろずメモ

0日目

姿勢を変えた時やくしゃみをしたときに胸が痛いから超不安になって病院に行ったら気胸じゃなくてただの胸筋の筋肉痛だった.心配性.

ライブラリの印刷が深夜になって準備不足を悔いた.

1日目

秋葉原からつくばエクスプレスでつくばへ移動.
poは移動のスケジュールのマージンが少ない傾向がある.
つくばは町並みが整ってるけど人の密度は高くなくて不思議な感じがした.

プラクティス.
英字キーボードが練習のために買ったのと違う方で残念だった.
B問題で2次方程式の解の公式を思い出すのに時間がかかった.

筑波大学に移動して歓迎会.
スピーチジャンケンに負けてポ😇.嘘を言った.

ホテルが綺麗で良かった.(マークワンつくば)

ARCに参加して300-300-900-1300の900で無理を感じ寝ようとした.
前日までの生活が破滅していたので2時まで寝られずつらかった.

2日目

朝が早くてつらい.
推奨電車時刻をぶっちしてタクシーで移動した.歩かなくていいのでこれは良かった.

コンテスト

まずB問題を読む.
書けそうなのでPCが空いているか聞いたらすでにA問題がdnkさんによって解かれていた.(FA)
Bを普通にAC.
yosupoがCの解法をくれたので実装してAC.
この後幾つか問題を読んで,解ける問題ないなあという感じだった.
ABCDGの5完までは圧倒的速度で,5完時は1位だった.
ここですでに僕は置物になっていた.
大炎上したのがF.
Fの解法をyosupoから聞いたが,自信がなかったので実装をパス.あと,最初に推移閉包を取るのは嘘ということに気づけなかった.
ここで実装を引き受けていたら違う展開になっただろうなあと思う.結果論だけれども.
僕以外が実装しているときは構成ゲーのIを考えたりしていたが全く成果がなし.
Fは最終的に全員で解法を検討してデバッグもしたけど結局ミスに気づけなかった.

反省

前半は本当によかった.
実装に対する自信や幾何やその他難しい問題を解けるパワーがあれば後半置物にならずに済んだかなあと反省.
精進しよう.

チーム戦としては,さすがに国内予選の時よりは大分よくなった.

懇親会

スポンサーの企業ブースが沢山並んでいてお祭り感がある.
問題とそれを解いた人限定の景品を出すスポンサーがたくさんあり大変.
面白い問題が色々配られていて全完はまず不可能という感じだった.

頂いたもの:

すごい関数電卓
Fixstarsに頂きましたが実はなぜもらえたのかよく分かっていない.

  • テレビちゃんぬいぐるみ
  • Tシャツ(超会議で販売されたもの?)
  • Unix考古学 Truth of the Legend
  • dwangoステッカー

dwangoブースはWA回数に応じて輪投げができるWA投げをやっていて,poにとって有利だったのでやってきた.
うまくいって全部の景品をもらってきた.

  • Indeed Tokyo リングノート

Indeedのスタッフに2人ゲーム(先手か後手を選べる)で勝つともらえる.
16x16の格子が与えられ,先手は直線で2分割し,後手は片方を選んで消滅させる.これを先手後手を入れ替えて続けていき,分割ができなくなったほうが負け.
全然分からなくて法則性が見えるまでDPしたりして,結局勝つまで4回かかった.
後手を選び,分割後のそれぞれの長方形のタテヨコ比が奇数:奇数のになるように分割し続ければ勝てる.

感想いろいろ

コンテストの環境は快適だった.
PENDINGがどれくらい待つか分からなくてドキドキするくらい.

DOMJudgeのJavaはpackage宣言がついていてもOKらしい.
スタックもデフォルトで64MB設定になっていたのでやさしい.
贅沢を言うとJava8が良かった.

去年のルールとは異なり英字キーボードしか提供されないのがわかっていたので,急いでLenovoの英字キーボードを買って使うようにした.
for文を高速で打ち込んだりは問題ないレベルにはなったが,使用頻度の低い記号が若干怪しいままだった.
逆に今は日本語キーボードに戻すのも大変なので,これからは英字配列を使う.

ライブラリは色々持っていったが結局高速入出力のみ使った.

これはしょうがないけどイベント中食事が圧倒的に偏る.ホテルの朝食にありがたみを感じた.

今後のICPC

もしかしたら今年まだ開催される海外の予選に参加するかもしれない.
来年は機会があればまた出たい.

ボンバーマン風ゲームのAIを書いてJava世界一になった (CodinGame Hypersonic参加記)

f:id:piroz95:20161003175517p:plain

世界12位,日本3位,言語別では1位🎉🎉🎉
(タイトルに大げさな称号を入れたかっただけです)

Hypersonicはターン制ボンバーマンのようなゲームで、生き残ったターン数が長く、箱を壊した数の多い人が勝ちです。

リプレイで雰囲気が分かると思います。↓
https://www.codingame.com/replay/141181004

初めは気軽に参加したのだけどやっぱりのめりこんでしまい、論文の進捗が危険になりました。
Code VS 5.0の反省を活かしてAIを作れたのが良かったです。
50位以内でTシャツももらえるので楽しみ。

ソースコードをgistに上げました。
追記:280行目は重複消去を意図していますが、ハッシュ値をセットに入れるコードが抜けていて機能していません。
Player.java · GitHub

以下、振り返りながら何をやったかダラダラ書いていきます。

続きを読む

ACM-ICPC 2016 国内予選 参加記

チーム結成

hadroriさんからDMが飛んできてよすぽ&dnkチームに空きがあるからどう?と誘われたので参加した。
僕が最年長だけど競プロ的には最弱なのでつらい。
あと、自分だけJavaを使うので若干デバッグで不利かもしれない。

チーム名がなかなか決まらず「po」になった。
http://icpc.logic.cs.tsukuba.ac.jp/team/279830

模擬Bとそれとは別に練習1回やって国内予選へ。

国内予選

まずBを読んでBを解いた。
ICPC特有の事情によってJavaはテンプレが必要だが、ちゃんと準備してなくて焦った。
難しく無い問題の割に時間をかけてしまった。

次にCの解法が降ってきたのでそれを実装した。
降ってきた解法がやや間違っていたが勘違いだったのですぐに修正できた。

D,Eをチームメイトが実装している間にFを考えた。
前半パートの時点で既に実装が重そうでつらい。
No.348 カゴメカゴメ - yukicoder
を思い出した。

後半パートは(根付き)木の同型判定になることが分かった。
木の同型判定は、部分木の同型判定を行ってマッチングを使うと可能なのは知っていたが、つらそうだと思った。
Fは実装が重そうなので後回しされることになった。

Gの解法を聞きながら「合ってるんじゃない?」とか言ったら不完全で結果爆発炎上した。

結果的にABCDEの5完でアジア地区予選に進めそうなので頑張ります。

予選後

懇親会に参加してチーム内反省会をするなどした。
帰って一人二次会(お酒を飲むだけ)をしながらこれを書いている。

反省

ICPCでのJava

3人チームという都合上若干肩身が狭い。
あと、自分はどうしてもEclipseでコーディングしたいのだが、標準入力を使うと入力がめっちゃデカイ時になんか怖い。
一方ファイル名を埋め込むと、予選のルール上ファイル名を変えられないのでちょっと困る。
そこで、標準入力でファイル名を読み込んで、そのファイル名を読み込む形式にしていた。
出力もコピペを使うとミスりそうで怖いのでファイル出力にした。
ここらへんの良い方法が知りたい。

木の同型判定

ハッシュを使う方法もあるらしい。

チーム戦

チーム特有の戦術をもっと詰められたらいいなあと思った。

CODE VS 5.0 決勝に出場しました

live.nicovideo.jp

結果は、Bリーグで1勝2敗のリーグ3位で敗退となりました。

応援して下さった方々ありがとうございました!

悔しさはありますが、実力相応の結果だと思います。(むしろ決勝に来れたのが奇跡的です)
一方、自分が工夫した部分が決勝でうまく働いているシーンがあってそれは嬉しかったです。

CODE VSが来年も開催されればチャレンジしたいです。

各対戦振り返り

vs D0

oxxooxoxx 4-5 負け

予選終了から本戦までの間、本戦AIからリスキー行動*1を外したAIを戦わせていたのですが、1-6という厳しい結果でした。
敵分身も使ってくる相手だったので、本戦版でも相性はそれほど良くならないはずです。

ソウル回収効率で言うとほとんど互角に見えます。
私のAIが回転斬に消極的な一方、D0さんは回転斬に積極的に忍力を使うので、D0さんがうまく回転斬を使うかが勝敗を分けていたように見えます。
また、要所要所で敵分身を使ってくるのも効いていました。
ラウンド8では、こちらが回転斬準備で犬に囲まれた時に敵分身を使ってきたので、こちらの分身油断モードが発動しなくなりました。
また、トドメも敵分身でした。
ラウンド9でも、回避困難な状況で敵分身を使われて負けたので、この辺りはキッチリやってくるなあと思いました。

ラウンド1はD0さんが回転斬で忍力を使いきり、なにもしなくても2手詰みとなったので、超高速反復横跳び→移動なし回転斬りが発動しました。
誰にも気づかれてなさそうです。

vs togatoga

xooxxooo 5-3 勝ち

予選終了から本戦までの間で15-26でした。

togatogaさんは回転斬のプロですが、超高速は使わないので、超高速低コスト回転斬高コストを引けば勝率は上がります。
本戦では回転斬り高コストが多かったので、そこは運に恵まれました。

ラウンド1では、早くから分身油断が発動していて、最後は犬に囲まれた時に回転斬が低コストにも関わらず使わずに負けてしまいました。
ラウンド7でコスト7高速移動を使っていることに対するコメントですが、より正確に言うと、まず妨害警戒で防御系忍術を使わざるを得ない状況だったはずです。
そして、その中で超高速だけ獲得できそうなソウルが多かったため、超高速を使ったのだと推測します。

ラウンド8は、見応えのある試合になったと思います。(自画自賛)
AIに搭載した機能のほとんどが使われている、自分のAIを象徴する試合です。奇跡か。
まず、敵分身を使われないまま犬30を超えたので、分身油断モードが発動し、左下で犬をすり抜けながらソウルを回収しています。
中盤からは回転斬りで追い上げました。2ターン目に回転斬りを発動した時、出来るだけ多くの犬を巻き込めるような動きをするようにしています。
犬で互角になった後、近くに取れるソウルが無くなり困っているシーンでは、評価値が3ターン連続で悪化した時に発動する分身連打モードで左上に強引にすり抜け、勝利を確実にしました。
最後は2手詰めの落石+ドヤ顔回転斬で締めてます。

私のAIは回転斬の条件が厳しく、コスト6でも4体巻き込めないと積極的に使いません。
他にも、使用後の残り忍力や、このソウル差で犬の差をひっくり返せるかなどを考慮します。

vs colun

xoxxooxox 4-5 負け

予選終了から本戦までの間で4-14でした。
一切妨害をしてこない相手なので、リスキー行動を解除した時には相性のよい相手になるはずです。
それでも勝てなかったので、colunさんのAIがとても強いと言えます。(バグってるのに・・・)

本戦の試合でも強引な分身を使って勝っている試合がいくつかあるように見えます。
恐らく、超加速のコストの低さよりも、自分身のコストの低さの方が勝率に寄与しています。
自分身コスト2をもっと引ければ分からなかったかもしれないです。
リーグを2勝まみれにしたかったなあ・・・

ラウンド8で詰ませたかのようなコメントをしていましたが、完全に嘘でした。(画面が見えていない)
詰ませが発動したのではなく、相手がスキル無しだと詰むときに、初回とりあえず妨害してみるやつです。
刺さったのはたぶんcolunさん側のバグです。

私はステージで自分の試合結果見るのめちゃくちゃ緊張してました。
冷静なコメント入れられる人々すごい。

vs DWANGO

ooooo 5-0 勝ち

全く未知の相手でしたが容赦ない感じになりました。学生時間パワーです。
DWANGOさんのAIもソウルに愚直に近づいているという訳ではなさそうで、
ラウンド5の20~35ターンあたりの右上の忍者は、うまく犬を回避しながら安全なソウルに向かっています。
評価関数を使った複数手の探索をしていそうです。


もし僕のエキシビジョンの相手がKlabのmecha_gさんだったら勝てなかったと思います。
予選終了から本戦までの間で2-10でした。

雑感

結論として勝ちたかったしか出てこない・・・

懇親会では予選の思い出を語れて面白かったです。逃げ切り狙いトークとか。

ゲームについての感想

CODE VS 4.0の時は折れたけどCODE VS 5.0はやれたのは、最初にやるべきことが分かりやすいからということと、オンライン対戦でモチベーションが上がったことだと思います。
最初は犬避けてソウル集めるだけで勝てる→オンライン対戦で強い人の戦法を(可能な限り)パクるで結構行けます。

積極的に攻撃するAIはそうでないAIに比べて難しいので決勝に攻撃AIが少ないのは仕方ない気がします。
さらに、安全志向AI>攻撃AI>リスキー行動AI>安全志向AIみたいな相性があり、
リスキー行動AIは予選だとシルバー~ブロンズの超攻撃AIにレーティング持ってかれるので、決勝に進出するのが難しい状況でした。
それにより安全志向AI優勢の流れが更に強くなった気がします。
繰り返しになりますが、後半リスキー行動取りまくりAIで決勝環境勝てなかったのホント悔しいです・・・

とはいえ、攻撃強くしすぎると殺伐詰み探索勝負になってしまうのでもしかしたらワザと避けているのかもしれません。
CODE VS 3.0とかそんな感じだったのだろうか・・・?

もっと特徴的な戦法も考えたことはあります。
例えば岩の配置を整備し、うまく犬の最短経路を切り替えることで犬を往復させるとか、
忍者に時計回りにグルグル移動することを強制させると実は強いんじゃないかとか。

CODE VS 5.0は本当に楽しめました。恐らく最後?の春休みのいい思い出になりました。

AIをこっそり公開しています

実行可能jarとソースとreadmeが入ってるzipです。
jarをCODE VSクライアントと同じフォルダに置いてreadmeにあるコマンドをコピペすれば多分すぐに動かせます。
本戦のAIより少し強くなっているので是非戦わせてみてください。
ソースはめちゃくちゃ汚いので見る価値は多分無いです。

https://dl.dropboxusercontent.com/u/264857305/pirozAI_v6.zip
(そのうち消えると思います)

*1:敵の忍術使用によって負ける可能性のある行動